Unity3D脚本介绍
脚本就是附加在游戏物体上用于定义游戏对象行为的指令代码。Unity支持C#高级编程语言。
1.语法结构
using 命名空间;
public class 类名:Monobehaviour
{void 方法名(){Debug.Log("调试信息.");print("调用Debug.Log()方法.");}
}
- 文件名与类名必须一致。
- 写好的脚本附加到物体上才能执行。
- 附加到物体的脚本类必须从MonoBehaviour类继承。
2.创建脚本
1.右键–>Create–>C# Script,即可创建脚本,然后使用双击文件,使用编程工具打开,即可编写代码。生成代码如下,若start和Update不需要使用,应该删除然后在编写代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class g_demo : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}
}
3.脚本生命周期
1.编写代码如下,将该文件拖拽待摄像机上,效果如下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class g_demo : MonoBehaviour
{public int a = 10;private int b = 20;
}
2.通过上述修改a的值为a=100,则a的值为该面板中的值,即上述效果其实是创建了一个对象。若需要在面板中显示private修饰的b的值,需要添加修饰字段 [SerializeField] ,它允许在编辑器中显示私有变量。
3.隐藏变量
添加 [HideInspector]字段 修饰。
4.对于写继承至MonoBehaviour的脚本文件,只需要写字段和方法。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class g_demo : MonoBehaviour
{public int a = 10;[SerializeField]private int b = 20;[HideInInspector]public int c = 10;[Range(0, 100)]public int r;/** 属性:在编辑器不能显示,通常脚本中不需要写。* 构造函数也不需要写,在Unity中,创建脚本对象,系统会创建子线程,而在构造函数中初始化,会出现无法访问主线程的资源(Unity脚本对象)而出错。* 在Unity中,脚本是以一个对象的形式存在的,与代码无关了。* 在脚本中,只需要写字段和方法。*/public int a_Value{get { return this.a; }set { this.a = value; }}
}
显示的效果
4.初始化
- Awake唤醒:当物体载入时,立即调用一次,常用于游戏开始前的初始化可以判断当满足某种条件执行此脚本this.enable=true。
- OnEnable当可用:每当脚本对象启动时调用;
- Start开始:物体载入且脚本对象启用时被调用一次。常用于数据或游戏逻辑初始化,执行时机晚于Awake。
- 如下启用脚本。
/*******************初始化**********************/private void Awake(){Debug.Log("Awake-->" + Time.time+this.name);}private void Start(){Debug.Log("Start-->" + Time.time + this.name);}
若某对象A需要在对象B后执行初始化,则可以把B对象的写在Awake里,A写在Start里面。