美文网首页
【Unity3D 学习笔记】脚本操作游戏对象

【Unity3D 学习笔记】脚本操作游戏对象

作者: FrankNotes | 来源:发表于2020-04-17 21:07 被阅读0次
  • 关于Gameobject与gameObject
    Gameobject是一个类型,所有的游戏物件都是这个类型的对象。gameobject是一个对象, 指的是这个脚本所附着的游戏物件。

  • 关于Transform与transform
    Transform是一个类,用来描述物体的位置,大小,旋转等等信息。transform是Transform类的对象,依附于每一个物体。也是当前游戏对象的一个组件(每个对象都会有这个组件)。

  • 关于gameObject.transform与transform.gameObject
    gameObject.transform是获取当前游戏对象的transform组件。所以gameObject.transform == transform;transform.gameObject是获取当前transform组件所在的gameObject。所以transform.gameObject == gameObject

游戏对象创建与销毁

直接创建

//创建正方体,可选类型有Cube、Capsule、Cylinder、Plane、Quad、Sphere
GameObject newGameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
newGameObject.name = "myCube";//赋名
newGameObject.tag = "myCubeTag";//标签
newgameObject.transform.position = new Vector3(0,0,0);//位置

克隆

//克隆对象myGameObject,设置位置、角度
GameObject newGameObject = Instantiate(myGameObject, new Vector3(0,0,0), Quaternion.identity) as GameObject;

//克隆预制体,需手动在Assets文件夹下建立Resources文件夹
GameObject newGameObject = (GameObject)Instantiate(Resources.Load("Prefabs/myGameObject"));

销毁

Destory(myGameObject);

 

获取游戏对象

通过对象名称获取对象

GameObject myGameObject = GameObject.Find("myCube") ;
  1. 可以查找任何层级的物体
  2. 可以指定层级或不指定,不指定时若有同名物体,则取列表中最后一个
  3. 不能查找隐藏物体
GameObject myGameObject = transform.Find("myCube")
  1. 只能查找到子集物体
  2. 查找其他层级需要完整路径
  3. 可以查找隐藏物体

通过标签获取游戏对象

GameObject = myGameObject;
GameObject[] myGameObjects;//声明

myGameObject = GameObjects.FindWithTag("myCube")//单个物体
myGameObjects = GameObjects.FindGameObjectsWithTag("myCube")//多个物体,附给数组变量
//对数组进行操作
foreach (GameObject everyGameobject in myGameObjects)
{
   Debug.Log("everyGameobject.name");
}

 

改变游戏对象的颜色

myObject.GetComponent<MeshRenderer>().material.color = new Color(1f, 0.4f, 0f, 0.7f);
myObject.GetComponent<MeshRenderer>().material.color = Color.red;

 

游戏对象的平移、旋转、缩放

平移

myCube.transform.Translate(Vector3.right * TransSpeed);
myCube.transform.position = new Vector3(-3.0f, -1.0f, 0f);

旋转

//自转
myCube.transform.Rotate(Vector3.forward * Time.deltaTime * RotateSpeed);  
//公转
myCube.transform.RotateAround(mySphere.transform.position, Vector3.right, RotateSpeed);
//直接到指定角度
myCube.transform.rotation = Quaternion.Euler(0f,1f,0f);
//平滑到指定角度
myCube.transform.rotation = Quaternion.Slerp(myCube.transform.rotation, Quaternion.Euler(0f, 270.0f, 0f), 0.1f);
myCube.transform.rotation = Quaternion.SlerpUnclamped(myCube.transform.rotation, Quaternion.Euler(10.0f, 27.0f, 50.0f), 0.1f);
//调整对象面向另一个物体
myCube.transform.LookAt(mySphere.transform.position);

缩放

myCube.transform.localScale = new Vector3(2.0f, 2.0f, 2.0f);

相关文章

网友评论

      本文标题:【Unity3D 学习笔记】脚本操作游戏对象

      本文链接:https://www.haomeiwen.com/subject/fajuvhtx.html