目录
1.调用物体的组件的函数
other.GetComponent<PlayerScript1>().AddCoin();
物体.获取组件<类名>.().函数名();
2.成员的属性
public或者private,public的变量可以显示在面板上。
其中 public的变量添加[HideInInspector]前缀,就可以不显示在面板上;
privated的变量添加[SerializeField]就可以显示在面板上,但是其属性不发生变化,其他脚本无法调用该变量。
[HideInInspector]
public int a;
[SerializeField]
private int b;
3.调试
通过Debug的静态方法,输出数值,提出警告或报错。
Debug.log("调试程序");
Debug.LogError("这里有一个报错");
Debug.LogWarning("这里有一个警告");
4.Console控制台
Console.Write("abc");
//写入字符串abc
Console.writeLine();
//同样写入字符串,自带换行
Console.Read();
//从键盘读取字符串
Console.ReadLine();
//从键盘读取字符串,换行结束
Console.ReadKey();
//读取用户的一次键盘输入,即一个字符
//ReadKey函数可用于暂停查看Console的内容
5.print
在类中使用print方法,该类需要继承MonoBehaviour。
而Debug.log()中log方法是static的,任意类可以直接访问。
6.List
Add:向List中添加一个变量
AddRange:向List中添加一组变量
7.单例模式
保证一个类只有一个对应的对象,并提供一个访问该对象的方法,这就是单例模式。
public class single
{
//唯一的对象
private static single instance=null;
public static single Instance
{
get {
if(instance == null)
{
instance=new single();
}
return instance;
}
}
public void run()
{
Debug.Log("运行");
}
}
public class test : MonoBehaviour
{
void Start()
{
single.Instance.run();
}
}
8.设计模式
观察者模式
通过接口interface实现
工厂模式
封装具体实例化的过程,只需调用实现的方法及接口。
9.interface override virtual
10.事件函数的执行顺序
- 开始:
Awake:始终在任何 Start 函数之前并在实例化预制件之后调用此函数。(如果游戏对象在启动期间处于非活动状态,则在激活之后才会调用 Awake。)
Reset:调用 Reset 可以在脚本首次附加到对象时以及使用 Reset 命令时初始化脚本的属性。
OnEnable:(仅在对象处于激活状态时调用)在启用对象后立即调用此函数。在创建 MonoBehaviour 实例时(例如加载关卡或实例化具有脚本组件的游戏对象时)会执行此调用。
(ps:可用于物体的初始化,每次重新激活时数值回到最初值)
Start:仅当启用脚本实例后,才会在第一次帧更新之前调用 Start。
->变量赋值的顺序:直接赋值 检视面板 Awake OnEnable Start 外部赋值(外部赋值指通过其他脚本对变量值进行修改)
- 更新:
Update:每帧调用一次 Update。这是用于帧更新的主要函数。
LateUpdate:每帧调用一次 LateUpdate__(在 Update__ 完成后)。LateUpdate 开始时,在 Update 中执行的所有计算便已完成。LateUpdate 的常见用途是跟随第三人称摄像机。如果在 Update 内让角色移动和转向,可以在 LateUpdate 中执行所有摄像机移动和旋转计算。这样可以确保角色在摄像机跟踪其位置之前已完全移动。
- 退出:
OnDisable:行为被禁用或处于非活动状态时,调用此函数。
(ps:和OnEnable很像,可用于物体的回收,在每次失活时将物体的数据重置)
OnApplicationQuit:在退出应用程序之前在所有游戏对象上调用此函数。在编辑器中,用户停止播放模式时,调用函数。
- 销毁:
OnDestroy:对象存在的最后一帧完成所有帧更新之后,调用此函数(可能应 Object.Destroy 要求或在场景关闭时销毁该对象)。
11.游戏物体的创建,属性和方法
创建游戏物体:三种方法 构造函数,预制体的实例化,API构造
GameObject GO =new GameObject("Name");//通过构造函数创建游戏物体
GameObject.Instantiate(grisGo);//通过事先的预制体实例化游戏物体
GameObject.CreatePrimitive(PrimitiveType.Cube);//通过API创建unity的原始对象
属性:
- tag:标签,区分不同的游戏物体
- layer:层级
- activeInHierarchy / activeSelf:查看游戏物体状态
方法:
- SetActive设置游戏物体的活动状态
- CreatePrimitive
- CompareTag 比较当前游戏物体的标签
- getComponent<>( );
获取其他游戏物体:
Find:通过游戏物体的名称查找
GameObject.Find("游戏物体的name");
FindGameObjectWithTag:通过游戏物体标签查找
GameObject go=GameObject.FindGameObjectWithTag("游戏物体的tag");
GameObject[] gos=GameObject.FindGameObjectsWithTag("多个游戏物体的共同tag");
FindObjectOfType:通过游戏物体类型查找
ComponentName cn=GameObject.FindObjectOfType<ComponentName>();
ComponentName[] cns=GameObject.FindObjectsOfType<ComponentName>();
其中,ComponentName指游戏物体具体的组件名或脚本名
12.Monobehavior
enabled函数判断是否启用
isActiveAndEnabled判断是否激活并启用