1 public class MonoTest : MonoBehaviour { 2 3 ///4 /// 1.在用户点击Inspector检视面板的Reset或者首次添加组件时被调用 5 /// 2.此函数只在编辑模式下(项目没有运行的时候)被调用。 6 /// 3.Reset最常用于在检视面板中给定一个默认值。 7 /// 8 void Reset() 9 {10 11 }12 13 14 ///15 /// 1.Awake在脚本整个生命周期内像构造函数一样仅被调用一次16 /// 2.初始化函数,在项目运动时系统自动调用17 /// 3.Awake 在所有对象被初始化之后调用,所以可以安全的与其它对象对话或使用诸如GameObject.FindWithTag()这样的函数搜索它们18 /// 4.不论脚本是否激活状态,Awake都会被调用(但如果绑定的物体没有激活,将不会调用Awake函数)19 /// 5.Awake 总是在Start之前被调用20 /// 6.它不能用来执行协同程序21 /// 22 /// 23 void Awake()24 {25 //建议:一般在Awake方法中创建游戏对象或在Resources.Load(Prefab)对象。26 //在start方法中去获取游戏对象或者游戏组件这样可以确保万无一失 了27 28 }29 30 31 ///32 /// 1.Start 在脚本整个生命周期内仅被调用一次33 /// 2.Start总是在Awake之后被调用34 /// 3.Start总是在Update前调用35 /// 4.必须在脚本被激活时才能被调用36 /// 37 void Start()38 {39 40 }41 42 43 ///44 /// 1.Update是正常帧更新,会在每一帧调用一次45 /// 2.帧长时时在改变Time.deltaTime46 /// 3.一般用于非物理的运动(比如使一个物体匀速运动)47 /// 48 void Update()49 {50 Debug.Log("Update时间间隔: " + Time.deltaTime);51 }52 53 54 55 56 57 ///58 /// 1.FixedUpdate 是固定帧更新,会在每个固定的时间频率调用一次函数59 /// 2.帧长时固定的(默认为0.02),不是时时改变的。 Edit ---》 Project Setting --》Time ---》Fixed Timestep60 /// 3.一般用于物理的运动(比如控制一些诸如RigidBody, Collider等物理相关组件)61 /// (物理引擎中用于物理的行为运动都是根据固定的时间来计算的)62 /// 63 /// 64 void FixedUpdate()65 {66 Debug.Log("FixedUpdate时间间隔: " + Time.deltaTime);67 }68 69 /***70 * Update 和 FixedUpdate 区别:71 * 1.两者帧长不同72 * 2.FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数会跟着下降73 * 3.Update 就比较适合做控制74 * 4.LateUpdate 与 Update方式一样,唯一不同的是75 * LateUpdate,在每帧Update执行完毕调用,他是在所有Update结束后才调用76 * 举例:摄像机跟随,都是在所有Update 操作完才跟进摄像机77 * 不然就有可能出现摄像机已经推进了,但是视角还未有角色的空帧出现78 * 79 */80 81 82 83 }
Cube1上有脚本Script1 给Cube2添加脚本Script2,
在Script1中start并调用中的Script2中的变量,这个变量在Script2中start中赋值,结果得到的是默认值,
要解决:在Awake中赋值。(添加脚本后,获取变量,这时候还没有执行start还没有调用)
如果两个脚本中在Awake方法里都做了事情,但是这样这两件事也有前后顺序怎么办?
可以设置脚本的执行前后顺序
Editor ---》 Project Setting ----》 Script Execution Order
或者选中脚本
拖拽添加需要执行顺序的脚本
设置后边的数字,从小到大,从先到后执行