Reset:在编辑器模式下使用reset功能或触发script时执行一次
Awake:当场景运行起来时或游戏物体被实例化时调用
OnEnable/OnDisable:禁用或启用游戏物体时调用
FixedUpdate:按照每秒固定帧率调用(可用于控制平滑运动)
Update/LateUpdate:按照游戏实际帧率调用,先调用/后调用
OnTrigger/OnCollision:用来触发触发器/碰撞器
OnMouse:与鼠标相关的输入事件
OnDrawGizmos:绘制Gizmos(场景中的一些辅助线)
OnApplicationPause:暂停时调用
OnApplicationQuit:退出时调用
OnDestroy:退出后调用销毁游戏物体
void Awake()
{
Debug.Log("Awake");
}
captureFramerate:设置帧的速率完成截图
deltaTime:每一帧运行占用的时间(1/60上下)
fixedDeltaTime:固定每秒运行的帧率
fixedTime:从开始运行经过的时间
frameCount:从开始运行的帧数
timeScale:时间的比例,可以用来调整倍速
timeSinceLevelLoad:场景加载之后运行的时间,更换场景会重新计时
realtimeSinceStartup:不受暂停影响持续计时,可以用来测试方法性能
smoothDeltaTime:平滑的时间变化
void Update()
{
Debug.Log(Time.deltaTime);
cube.Translate(Vector3.forward * Time.deltaTime);//速度*时间固定每帧移动的距离
Time.timeScale = 0;//控制游戏暂停或倍速
}
public int runCount = 10000;
void Start()
{
float time1 = Time.realtimeSinceStartup;
for(int i = 0; i < runCount; i++)
{
Method1();
}
float time2 = Time.realtimeSinceStartup;
Debug.Log(time2 - time1);
float time3 = Time.realtimeSinceStartup;
for (int i = 0; i < runCount; i++)
{
Method2();
}
float time4 = Time.realtimeSinceStartup;
Debug.Log(time4 - time3);
}
public GameObject prefab;
void Start()
{
//第一种:直接new
GameObject one = new GameObject("Cube");
//第二种:根据预制件或其他游戏物体克隆实例化
GameObject.Instantiate(prefab);
//第三种:创建原始的基本图形
GameObject.CreatePrimitive(PrimitiveType.Cube);
}
transform:定义游戏物体的位置,每个游戏物体必须有且仅有一个
tag:标签,区分场景中的游戏物体
layer:游戏物体所在层
scene:所在场景
activeinHierarchy:判断游戏物体是否处于激活状态,子物体跟随父物体为false
activeSelf:子物体有自己的激活状态
SetActive:设置物体的激活属性,布尔型
AddComponent:为游戏物体添加组件
CompareTag:比较标签
BroadcastMessage:向所有MonoBehaviour的游戏物体及其子物体发送消息,调用有方法名参数的方法,无需获取引用
SendMessage:向所有MonoBehaviour的游戏物体发送消息,不包括子物体
SendMessageUpwards:向所有MonoBehaviour的游戏物体及其父物体发送消息,但父物体只有一个
GetComponent:得到游戏物体的组件,查找到第一个
GetComponentInChildren:得到物体孩子上的组件
GetComponentInParent:得到物体父亲上的组件
GetComponents:得到游戏物体的组件,查找到所有
GetComponentsInChildren:得到物体孩子上的组件,查找到所有
GetComponentsInParent:得到物体父亲上的组件,查找到所有
void Start()
{
GameObject one = new GameObject("Cube");
one.AddComponent();
Debug.Log(one.tag);
}
public GameObject target;
void Start()
{
target.BroadcastMessage("Attack", null, SendMessageOptions.RequireReceiver);//必须要有接收者
target.BroadcastMessage("Attack", null, SendMessageOptions.DontRequireReceiver);//不一定要有接收者
}
name:物体的名字
Destroy:可以销毁游戏物体或组件,也可以指定经过多少时间后销毁
DontDestroyOnLoad:传递一个游戏物体,当场景变换时不销毁原来场景中的游戏物体,而是带到下一个场景中去
FindObjectOfType:找到场景中第一个对应的组件时返回
FindObjectsOfType:找到场景中所有对应的组件,不查找未激活的游戏物体
void Start()
{
Light light = FindObjectOfType();
light.enabled = false;
}
CreatePrimitive:创建基本图形
Find:遍历场景中所有物体查找,如果游戏物体过多比较耗费性能,返回游戏物体
FindGameObjectsWithTag:在标签范围内查找,返回游戏物体数组
SetActive:激活或禁用游戏物体
void Start()
{
GameObject go = GameObject.Find("Main Camera");
go.SetActive(false);
}
void Start()
{
GameObject[] gos = GameObject.FindGameObjectsWithTag("MainCamera");
gos[0].SetActive(false);
}
runInEditMode:在编辑模式下运行
Invoke:调用某个方法,参数为方法名字的字符串、时间
InvokeRepeating:重复调用某个方法,参数为方法名字的字符串、第一次调用多久后开始的时间、多久调用一次的时间
CancleInvoke:取消调用某个方法,没有参数
协程方法:
主程序运行中,不需要等到协程方法执行完就可以继续向下执行,返回值是IEumerator,返回参数的时候使用yield return null/0
StartCoroutine:开启调用协程方法,StartCoroutine(method());
StopAllCoroutines:停止调用所有协程方法
StopCoroutine:停止调用协程方法,与开始的参数形式要对应
void Start()
{
Invoke("Attack", 3);
}
void Attack()
{
print("攻击目标");
}
void Start()
{
StartCoroutine(ChangeColor());
}
IEnumerator ChangeColor()
{
yield return new WaitForSeconds(3);//等待三秒再开始执行
cube.GetComponent().material.color = Color.blue;
yield return null;
}
public GameObject cube;
void Start()
{
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine(Fade());
}
}
IEnumerator Fade()
{
for(float i=0;i<=1;i+=0.1f)
{
cube.GetComponent().material.color = new Color(i, i, i, i);
yield return new WaitForSeconds(0.1f);
}
}
继承自conponent中的成员方法:
isActiveAndEnabled:判断组件是否激活
enabled:true/false设置是否激活组件
tag:获取该组件游戏物体的标签
gameObject:获取该组件的游戏物体
transform:获取该组件游戏物体的位置
name:获取该组件游戏物体的名字
静态方法:
print:输出
OnMouseDown:在GUI和collider情况下,按下鼠标时调用
OnMouseDrag:在鼠标拖拽时调用
OnMouseEnter:鼠标移上物体时调用一次
OnMouseExit:鼠标移出时调用
OnMouseOver:鼠标在物体上时调用,鼠标一直在一直调用
OnMouseUp:鼠标抬起时调用