一Prefab
它以文件的形式存储在硬盘上,它里面可能包含了各种设置,组件等
二unity项目目录结构
Assets:项目资源,脚本等等
Libreary:编译产生的库
projectSetting:项目设置
temp:临时文件
三unity脚本的继承关系
monobehavier--------behavier-----Component---Object
四unity脚本的生命周期
Awake:脚本第一次加载时调用,只调用一次
OnEnable:对象变成可用状态时调用
OnStart:在Update方法第一次被调用时使用,只调用一次
OnFixedUpdate:每帧都执行,每帧的执行时间可以自己设定(edit---Projecting---time),通常用于处理Rigdibody
OnUpdate:每帧都执行
OnLateUpdate:每帧都执行,在Update方法后执行
onDisable:脚本不可用即脚本前面的没打挑
onDestroy:脚本被删掉时调用
五uniry常用类
1.GameObject
把一个脚本加到了一个游戏对象上,则:this.gameObject就是代表当前游戏对象
//设置自己是否活跃
this.gameObject.SetActive(false);
此时按照unity的生命周期,OnEnable将会被调用
得到了游戏对象本身之后,怎么获取游戏对象上的组件呢
Transform tf_my = this.gameObject.GetComponent<Transform>();
得到了游戏对象的组件,就可以进行一些其他的操作了,这就是获取游戏对象的目的
那么,如何在当前脚本中获取其他的游戏对象呢,这就要使用GameObject类了
GameObject s = GameObject.Find("Sphere");
GameObject.FindGameObjectWithTag("qiu");
GameObject.FindGameObjectsWithTag("qiu");//把所有的tag为qiu的都能找到
获取其他游戏对象的三种方法
还有一种”省时省力“的方法
public GameObject g;
在场景中,直接把你想获取的游戏对象拖拽给该脚本中的值就可以了
获取游戏对象的另一种方法:Transform类有一个方法,(tf.gameObject)可以获取到该对象,所以,如果获取了游戏对象的transform,也就相当于获取了这个游戏对象,怎么获取该物体的Transform呢,可以使”用省时省力"的方法
public Transform tf;
GameObject game = tf.gameObject//获取了对象
小结:获取其他的游戏对象,有2大类方法,第一种是使用GameObject的方法,第二种是使用Transform方法。在unity中,public 的变量,都可以在面板中拖进来。
2.Transform类
Transform代表的是位置信息,还有父子关系(我们在当前的脚本中获取了其他的游戏对象,可以通过它得Transform获得它得爸爸和最高层级,好处:不用一个个获取游戏对象,相对来说,省去了一些代码,并且,代码也更加清晰吧)
同理,获取当前对象的Transform对象,直接使用this.transfrom就可以了
获取其他对象的Transform上面也写了
它常用的方法:
Debug.Log(this.transform.position);//在世界坐标系中,该游戏对象的位置
Debug.Log(this.transform.localPosition);//相对于父级的位置
Debug.Log(this.transform.eulerAngles);//欧拉角,也就是属性面板中的Rotation的值
Debug.Log(this.transform.localEulerAngles);//相对于父级的欧拉角
Debug.Log(this.transform.rotation);//旋转角度,返回类型是Quaternion
Debug.Log(this,transform.parent);//返回类型为Transform
Vector3 f = transform.forward;//z轴
// transform.right;//x轴
// transform.up;//y轴
区别与联系
this.transform.Rotate(20, 0, 0);//x轴转20度,Rotation的x变了20,让它转20度<pre name="code" class="csharp"> Quaternion q = Quaternion.Euler(new Vector3(20,0,0));//将转换成四元数
transform.rotation = q;//瞬移
transform.Translate(V);//将物体移动到那个点
transform.position = V;//瞬移