9.Unity脚本基础-脚本基本规则
9.1 知识点
设置编程工具
- 打开首选项
- 选设置IDE
基本规则
创建规则
- 可以不在VS中创建脚本了,可以直接在Project窗口右键创建脚本。
- 可以放在Assets文件夹下的任何位置,建议同一文件夹管理,比如文件名取名Scripts。
- 类名和文件名必须一致,不然不能挂载或者丢失(因为反射机制创建对象,会通过文件名去找Type)。
- 建议不要使用中文名命名
- 没有特殊需求不用管命名空间
- 创建的脚本默认继承 MonoBehaviour
继承 MonoBehavior 的类
- 创建的脚本默认都继承 MonoBehaviour,继承了 MonoBehaviour 才能够挂载在 GameObject 上。
- 继承了 MonoBehaviour 的脚本不能 new,只能挂,否则运行时会有警告。
- 不要去写构造函数,因为不会去 new 它,写构造函数没有任何意义。
- 继承了 MonoBehaviour 的脚本可以在一个对象上挂多个。一般情况下不会在同一对象放多个相同脚本。加了 DisallowMultipleComponent 特性的话则会有弹出警告不能添加多个相同脚本。
- 继承 MonoBehaviour 的类也可以再次被继承。遵循面向对象继承多态的规则。
不继承 MonoBehaviour 的类
- 不继承 MonoBehaviour 的类不能挂载在 GameObject 上
- 不继承 MonoBehaviour 的类想怎么写怎么写。如果要使用需要自己 new。
- 继承 MonoBehaviour 的类一般是单例模式的类或者数据结构类,用于管理模块或者存储数据。
- 不继承 MonoBehaviour 的类不用保留继承 MonoBehaviour 默认出现的几个生命周期函数
执行的先后顺序
打开脚本执行顺序窗口,点击选择要添加执行顺序的脚本。
设置自己添加的脚本的执行顺序
- 这里有一些系统默认要先执行的脚本,可以设置自己添加的脚本的执行顺序,数字越小脚本越先执行。
默认脚本内容
- 打开当前Unity编辑器版本路径下的Editor\Data\Resources\ScriptTemplates目录
- 可以看到Unity的模板信息,81-C# Script-NewBehaviourScript.cs中存的就是默认新建C#脚本的模板。
9.2 知识点代码
Lesson9_脚本基本规则Test
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[DisallowMultipleComponent]
public class Lesson9_脚本基本规则Test : MonoBehaviour
{
void Start()
{
Lesson9_脚本基本规则Test t = new Lesson9_脚本基本规则Test();
Lesson9_脚本基本规则Test4 t4 = new Lesson9_脚本基本规则Test4();
}
void Update()
{
}
}
Lesson9_脚本基本规则Test2
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson9_脚本基本规则Test2
{
}
Lesson9_脚本基本规则Test3
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson9_脚本基本规则Test3 : Lesson9_脚本基本规则Test
{
void Start()
{
}
void Update()
{
}
}
Lesson9_脚本基本规则Test4
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson9_脚本基本规则Test4
{
string name;
int age;
}
9.3 练习题
为什么继承MonoBehavior的类不能写构造函数?
- 因为MonoBehaviour不能直接使用
new
关键字实例化,而是需要将其挂载到游戏对象上。 - 我们不会通过构造函数实例化继承自MonoBehaviour的类,而是通过Unity引擎在游戏运行时自动创建和管理这些类的实例。
- 因此,编写构造函数在这种情况下没有意义,因为它们不会被调用。
为什么继承MonoBehavior的类不能直接new出来用,要挂载?
- 这是由Unity引擎的设计规则所决定的。
- 继承自MonoBehaviour的类只能通过挂载到游戏对象上来使用,这是Unity引擎的运行机制。
- Unity引擎在游戏运行时会自动管理继承自MonoBehaviour的类的生命周期和行为,因此必须将它们挂载到游戏对象上才能让引擎管理它们的生命周期和行为。
请写一个类用于说明不继承MonoBehavior的类对于我们的作用
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com