C#脚本

  • 脚本是附加在游戏物体上用于定义游戏对象行为的指令代码
  • 附加到游戏物体的脚本类必须从MonoBehaviour类继承
  • 脚本初始化:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Demo01 : MonoBehaviour
{
    // Start is called before the first frame update
    private void Start()
    {
        
    }

    // Update is called once per frame
    private void Update()
    {
        
    }
}

  • 脚本生命周期/必然事件/消息:unity脚本从唤醒到销毁的过程
  • 脚本通常不写属性和构造函数,只写字段和方法
  • 不写构造函数因为1.脚本是子线程,不能访问主线程成员
    2.unity会多次在运行期间创建对象,与构造函数初衷不符
    3.脚本生命周期
    //序列化字段,在编译器中显示私有变量
    [SerializeField]
    private int a = 100;
    //隐藏字段
    [HideInInspector]
    public int b = 200;
    //范围
    [Range(0,100)]
    public int c;
//-------------------------生命周期--------------------------------------
    //Awake先执行 创建游戏对象,立即执行
    private void Awake()
    {
        Debug.Log("Awake" + Time.time.ToString()) ;       
    }
    //Start后执行  创建游戏对象,脚本启用,才执行
    private void Start()
    {
        Debug.Log("Awake" + Time.time);
    }
    //每隔固定时间0.02s修改一次 用于物体运动 不会受到渲染影响
    private void FixedUpdate()
    {
        
    }
    //渲染帧执行 适合处理游戏逻辑
    private void Update()
    {
        
    }
    //延迟更新
    private void LateUpdate()
    {
        
    }
    //-------------------------鼠标事件-----------------------------------
    /*OnMouseEnter
     * OnMouseOver
     * OnMouseExit
     * OnMouseDown
     * OnMouseUp
     */

    //-------------------------场景渲染-----------------------------------
    //相机可见
    static void OnBecameVisible()
    {

    }
    //相机不可见
    static void OnBecameInbisible()
    {

    }
    //-------------------------结束阶段-----------------------------------
    //OnDisable 当不可用
    //OnDestroy 当销毁
    //OnApplicationQuit 当程序结束

4.生命周期
5.print方法来自父类 MonoBehaviour 仅限在脚本中使用
6.1-8 单帧调试:启动调试 运行场景 暂停游戏 加断点 单帧执行 结束调试
7.深度优先遍历子组件

if (GUILayout.Button("GetComponents"))
        {
            var allComponent = this.GetComponentsInChildren<MeshRenderer>();
            foreach(var item in allComponent)
            {
                Debug.Log(item.GetType());
            }
        }
原文地址:https://www.cnblogs.com/treblez/p/13503950.html