-
关于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") ;
- 可以查找任何层级的物体
- 可以指定层级或不指定,不指定时若有同名物体,则取列表中最后一个
- 不能查找隐藏物体
GameObject myGameObject = transform.Find("myCube")
- 只能查找到子集物体
- 查找其他层级需要完整路径
- 可以查找隐藏物体
通过标签获取游戏对象
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);
网友评论