Unity c# 入门

96 阅读3分钟

Unity脚本

  • Unity脚本开发是整个游戏开发过程中的重要环节,即使是最简单的游戏也需要脚本来实现响应用户的操作。
  • 此外游戏场景中的事件触发、游戏对象的创建和销毁、游戏对象的运动行为,都需要通过脚本来控制。

Unity脚本基本概念

  • 交互是游戏开发中必不可少的概念,它使玩家能根据自己的 意愿改变游戏场景中的某些元素与行为。
  • 交互包括玩家通过输入系统与游戏场景进行互动,也包括游 戏场景中游戏对象之间的交互
  • 开发者实现游戏交互功能的主要手段,实现交互的主要工具 就是脚本( Script)。
  • 创建脚本:Project视图->鼠标右击->Create->C# Script
  • 脚本是游戏资源
  • 脚本绑定后是游戏对象组件

Console ( 控制台)视图

  • Clear:点击将删除控制台当前所有信息。
  • Collapse:按钮启用时,相同信息在控制台只显示一次 (消息的尾部显示它出现的次数)。
  • Clear on Play:按钮启用时,每次游戏预览开始,Unity清除 控制台显示的所有消息。
  • Error Pause:按钮启用时,游戏预览过程若脚本出现错误Unity中断本次游戏预览。

脚本生命周期

  • Unity - Manual: Order of execution for event functions (unity3d.com)
  • 对于普通 C# 控制台程序, Main 函数是它的主入口,Unity 脚本中没有类似的 Main 函数作为程序的主入口。 
  • Unity 在游戏运行的各个阶段会调用脚本的事件函数,例如 Start() 函数和 Update()函数 执行这些函数内部的脚本逻辑,这些事件函数均继承至 Unity 脚本的默认基类 MonoBehavior。 
  • MonoBehavior 基类定义的 Unity 事件函数,Unity 项目在运行时会在特定时刻调用相应的事件函数。
  • 所有函数的调用轨迹形成了 Unity 脚本的生命周期image.png

Unity 事件函数

  • Reset():脚本编辑阶段执行,脚本绑定到游戏对象上执行一次。
  • Awake():当脚本链接的游戏对象被激活时执行(无论该脚本组件是否启用)。
  • OnEnable():当该脚本启用时执行一次。
  • Start():当该脚本启用时进行检查。若场景中该Start()函数从未执行,OnEnable()函数执行后执行一次。否则,不执行Start()函数(即每个Start()函数在每个场景中只执行一次。)
  • FixedUpdate():每隔固定时间执行一次常用于物理模拟,如作用力的添加等。
  • OnTriggerXXX():每隔固定时刻检测一次包括OnTriggerEnter()、OnTriggerStay()、OnTriggerExit()函数 分别用于有物体进入、停留、离开Trigger(触发器)范围时执行。
  • OnMouseXXX():输入阶段,用于响应鼠标的输入事件。
  • Update(): 每帧执行一次,常用于游戏逻辑等相关行为的执行。
  • LateUpdate():每帧执行一次,在Update()函数后执行,举例:第三人称游戏的摄像机跟随,Update()中执行玩家角色移动LateUpdate()中执行摄像机跟随玩家,能防止摄像机的抖动现象。
  • OnGUI():每帧执行多次,绘制Unity的图形用户界面。
  • OnDisable():当该脚本禁用时执行一次。 当脚本启用时跳至OnEnable()函数执行阶段,并继续循环执行直至脚本禁用。

Unity脚本之间执行顺序

  • 不同Unity脚本之间的默认执行顺序:以堆栈的方式(先进后出),先设置、后执行。
  • Unity脚本的默认执行顺序:先绑定的脚本后执行。
  • 使用MonoManager对脚本的执行顺序进行排序
    • Edit菜单-> Project Setting -> Script Execution Order,优先级小的先执行。
  • 未在MonoManager进行脚本设置,则脚本优先级默认为0 ( Default Time)。
  • 对于优先级相等的脚本,则采用默认的“先设置,后执 行”执行方式。
  • 优先级只表示脚本的执行顺序,并不表示脚本执行时间的延迟(即优先级=100不表示延迟100ms运行)。