Appearance
Unity基础
脚本生命周期
| 方法名称 | 调用时间 |
|---|---|
| Awake | 最早调用。在此可以实现单例模式 |
| OnEnable | 组件激活后调用。Awake后调用一次 |
| Start | 在Update前调用一次,一般在这里设置初始值 |
| FixedUpdate | 固定频率调用方法 |
| Update | 帧率调用方法,每帧调用一次 |
| LateUpdate | Update每调用完一次,紧跟着调用一次 |
| OnDisable | 组件未激活时调用 |
| OnDestroy | 被销毁后调用一次 |
常用API
Debug
Debug类用于调试,其结果是在Console中打印出相关信息。
| 方法 | 详解 |
|---|---|
| Log | 控制台面板中输出一条消息 |
| LogWarning | 控制台面板中输出一条警告消息 |
| LogError | 控制台面板中输出一条错误消息 |
| DrawLine | 在指定的起始点和终点之间绘制一条直线 |
| DrawRay | 在指定的起始点向一个向量绘制一条直线 |
GameObject
| 属性方法 | 详解 |
|---|---|
| activeInHierarchy | 游戏物体在场景中真正的激活状态 |
| activeSelf | 游戏物体在场景中设置的激活状态 |
| tag | 游戏物体的标签 |
| layer | 游戏物体的图层 |
| transform | 游戏物体的Transform组件 |
| name | 游戏物体的名称 |
| AddComponent | 添加组件 |
| GetComponent | 得到某个组件 |
| GetComponents | 得到多个组件 |
| GetComponentInChildren | 在子物体上得到组件 |
| GetComponentInParent | 在父物体上得到组件 |
| SetActive | 设置物体的激活状态 |
| ===== | ===== |
| Find | 静态方法,在场景中根据物体名称寻找游戏物体并返回 |
| FindWithTag | 静态方法,在场景中根据标签寻找游戏物体并返回 |
| FindGameObjectsWithTag | 静态方法,在场景中根据标签寻找多个游戏物体并返回 |
| Destroy | 静态方法,移除并销毁一个物体 |
| Instantiate | 静态方法,复制一个游戏物体。一般用此方法实例化预制体 |
| DontDestroyOnLoad | 静态方法,设置此游戏物体在切换场景时不会销毁 |
Time 时间类
| 属性方法 | 详解 |
|---|---|
| deltaTime | 上一帧到这一帧所花的时间 |
| fixedDeltaTime | 固定间隔时间 |
| time | 游戏开始到现在所花的总时间 |
| timeScale | 时间缩放值,默认为1.0 |
Mathf 数学类
| 属性方法 | 详解 |
|---|---|
| Deg2Rad | 角度转弧度 |
| Rad2Deg | 弧度转角度 |
| PI | 圆周率 |
| Abs | 绝对值 |
| Sin/Cos/Tan | 正弦/余弦/正切 |
| Asin/Acos/Atan | 反正弦/反余弦/反正切 |
| Clamp | 将数字限制在一个范围 |
| Clamp01 | 将数字限制在0~1 |
| Lerp | 线性插值 |
| Max | 返回最大值 |
| Min | 返回最小值 |
| Sqrt | 返回平方根 |
Application 应用类
该类主要与程序进行交互
| 属性方法 | 详解 |
|---|---|
| dataPath | 游戏数据文件夹路径 |
| persistentDataPath | 持久化游戏数据文件夹路径 |
| streamingAssetsPath | StreamingAssets文件夹路径 |
| temporaryCachePath | 临时文件夹路径 |
| runInBackground | 控制在后台时是否运行 |
| OpenURL | 打开一个URL |
| Quit | 退出 |
多线程
csharp
using System.Threading;
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
// 创建多线程
ThreadStart ts = new ThreadStart(threadTest);
Thread thread = new Thread(ts);
// 开始多线程
thread.Start();
}
void threadTest()
{
// 该方法中的代码均在子线程中调用
Debug.Log("线程中");
// 线程休眠
Thread.Sleep(5000);
Debug.Log("5s过去了");
}
}csharp
using System.Threading;
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
Debug.Log("忙活");
Debug.Log("忙活");
Debug.Log("忙活");
// 开始多线程
ThreadStart ts = new ThreadStart(MTest);
Thread thread = new Thread(ts);
thread.Start();
Debug.Log("继续忙活");
Debug.Log("继续忙活");
Debug.Log("继续忙活");
}
void MTest()
{
Debug.Log("开始烧水");
Thread.Sleep(5000);
Debug.Log("结束烧水");
}
}协程的使用
使用协程的类必须继承自MonoBehaviour
csharp
using System.Collections;
using UnityEngine;
public class Test : MonoBehaviour
{
private void Start()
{
Debug.Log("忙活");
StartCoroutine(ITest());
Debug.Log("继续忙活");
}
IEnumerator ITest()
{
Debug.Log("干点别的");
yield return new WaitForSeconds(5);
Debug.Log("干完了");
}
}