Unity脚本的结构
每一个脚本就是一个类,只不过在类中没有之前的我们在C#中接触的Main方法了。我们写的逻辑代码需要直接或者在间接在Unity声明周期函数中调用。而且这样的类不需要通过实例化调用对象,只需要将脚本挂载到游戏对象上即可。根据之前的博客我们已经了解过,Unity是组件式开发。脚本也是一个组件。
MonoBehavior脚本和C#脚本的区别
- 不能new 如果脚本继承MonoBehavior,那么该类不能被new
- 有自己的声明周期
- 作为组件附加在GameObject上面
- 我们在创建脚本的时候,会默认继承MonoBehavior
控制台的输出
在写程序的时候我们通常会通过控制台来控制打印日志信息来配合程序的调试,这个区别于C#语言中的控制台的输出。
GameObject和Transform区别
- 特殊组件
- 共生体
- 互相可以获取
- 新组建的添加和删除
自定义类型
我们在创建脚本的时候,默认的都会继承自MonoBehaviour,如果需要其他的类型,我们也可以不继承自MonoBehaviour,有一点需要注意的就是,我们穿件的脚本的名字一定要和源码中的类名保持一致,否则就会报错
访问修饰符在Unity监控面板的表现
不同的访问修饰符在程序中的访问权限是不同的,在Unity面板中的表现也是不一样的。
Unity生命周期函数
常用的生命周期函数
Awake() 脚本启动
OnEnable() 脚本可用
Start() 脚本开始
Update() 脚本循环
OnDisable() 脚本不可用
OnDestroy() 脚本销毁
参考代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Function : MonoBehaviour {
//脚本最先执行的方法
//初始化变量 初始化组件
private void Awake()
{
print("Awake");
}
//脚本可用 脚本激活 不同于对象的激活
//游戏对象激活的时候会对自身的脚本激活
void OnEnable()
{
Debug.Log("OnEnable");
}
//游戏开始 晚于Awake
// Use this for initialization
void Start ()
{
}
//游戏就是一个死循环 在游戏开始的时候进入死循环
//不同于第一周所学的内容的的是,该死循环不是阻塞式的
//update是帧式的,每帧执行一次Update 每秒执行n帧
//在此方法中执行的是用于游戏的逻辑
// Update is called once per frame
void Update () {
Debug.Log("Update");
}
//脚本失活,不可用就执行
//可以多次执行
void OnDisable()
{
Debug.Log("OnDisable");
}
//脚本销毁执行
//脚本删除的一些还原或者清空数据的操作
void OnDestroy()
{
Debug.Log("OnDestroy");
}
}
Color 颜色
Color是一个结构类型,采用的是三原色,RGB。R就是Red,G就是Green,B就是Blue。RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
在此结构中,定义了一些常用的颜色,我们可以通过,Color.颜色名来获取单颜色;
我们也可以通过程序来自己自定义颜色。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ColorTest : MonoBehaviour {
public Color m_color;
// Use this for initialization
void Start () {
//Random.Range(0, 1.0f) 我们通过该静态方法产生随机数 对于浮点类型来说该方法的两个参数是一个封闭的区间,换句话说,随机数可以取到0和1.0f
//但是对于整型int来说 是一个左闭右开的区间 即能取到左边的值但是取不到右边的值
m_color = new Color(Random.Range(0,1.0f), Random.Range(0, 1.0f), Random.Range(0, 1.0f));
}
}