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 update
void Start()
{
}
// Update is called once per frame
void 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里面。