美文网首页
【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