游戏物体创建
游戏物体创建
执行普通方法:
普通方法执行完,继续向下执行
协程方法:
调用完协程方法后,不会等这个方法执行完就继续向下执行了
MonoBehaviour里面的常用变量
MonoBehaviour
Variables 变量
runInEditMode
useGUILayout
CancelInvoke 取消调用 只取消当前脚本的方法
Invoke 调用某个方法
InvokeRepeating 一直调用某个方法
与组件获得有关
GetComponent 根据类型得到游戏物体的组件 有多个组件时只会返回得到一个
GetComponentInChildren 根据类型得到游戏物体某个组件的子物体 有多个子物体时只会返回一个子物体
GetComponentInParent 根据类型得到游戏物体某个组件的父物体,有多个父物体时只返回一个父物体
GetComponets得到游戏物体上的所有组件
GetComponentsInChildren得到游戏物体组件上所有的子物体
GetComponentsInParent得到游戏物体组件上所有的父物体
GameObject的静态方法
layer 获取游戏所在的层
scene 获取游戏的场景
静态查找方法
CreatePrimitive 创建某个基本体
Find 根据名字进行查找 遍历游戏场景当中的所有物体
FindGameObjectsWithTag 根据标签进行查找(查找游戏当中所有标签名称相同的物体)返回的时数组
FindWithTag 根据标签进行查找(当游戏当中有多个相同tag名时,只返回一个)
1.GameObject go=GameObject.Find("类名");
go.SetActive(false);
2.GameObject[] go=Gameobject.FindGameObjectsWithTag("标签名");
go.SetActive(false);
3.GameObject go=GameObject.FindGameObjectWithTag("标签名");
go.SetActive(false);
公共方法
Destroy 销毁
FindObjectOfType 查找游戏当中所有物体的组件并返回成数组
禁用和启用物体
activeinHierarchy 区分游戏物体是否处于激活状态
activeSelf 是否把游戏物体设置为False
tag 区分不同的游戏物体
Debug.Log(go.activeInHierar)
如何给游戏物体通过代码添加组件
AddComponet<>
GameObject.CreatePrimitive(PrimitiveType.Plane);
GameObject go=GameObject.CreatPrimitive(PrimitiveType.Cube);
go.AddComponent<Rigidbody>();给Cube添加刚体
go.AddComponent<API01EventFunction>();
给Cube添加
构造方法用于创建空物体
Instantiate 可以实例化各种各样的东西
CreatePrimitive chuangjian
创建游戏物体的三种方法
1.new GameObeject("cube");
2.根据prefab
GameObeject.Instantiate(prefab);可以根据prefab或者另外一个游戏物体克隆
3.
GameObject.CreatePrimitive(PrimitiveType.plane); 创建一个plane
GameObejct.CreatePrimitive(PrimitiveType.plane); 创建一个Cube
Time.delta Time
控制动画、运动有关的东西
public transform cube;
cube.Transform(Vector3.forward*Time.delateTime);
Time.timeScale=0;经常用于暂停游戏(前提是所有运动的物体都使用了Time.dekateTime控制运动)
realTimeSinceStartup
做测试性能
public transform runCount=100000;
float time1=time.realtimeSinceStartup
for(int i=0;i<runCount;i++)
{
Method1(1);
}
float time2=time.realtimeSinceStartup
Debug.Log(time2-time1);
3 4
Time类中静态变量
Time.dalteTime
使用 Time.deltaTime 可在 y
方向以 n
单位/秒的速度移动 GameObject。将 n
乘以 Time.deltaTime,然后与 y
分量相加。
当前帧所占用的时间 每一帧所占用的时间在60分之1每秒左右 每一帧的时间间隔
Time.fixedDeltaTime
当前固定帧所占用的时间
Time.fixedTime
从游戏开始所占用的时间 代表游戏运行的时间
realtimeSInceStartup
Time.time
从游戏开始所运行的时间
Time.frameCount
代表从游戏开始到现在运行的总帧数
Time.realtimeSinceStartup
从游戏开始到现在游戏所运行的时间 游戏暂停或在后台运行时,时间会一直增加
Time.smoothDeltaTime
平滑运动
Time.timeScale
时间的比例 可以让游戏加速或暂停播放
Time.timeSinceLevelLoad
当前场景所加载完成后运行的时间
从场景加载完成时开始计时 以场景的开始为单位
Time.unscaledTime
游戏从开始到现在所运行的时间 不受time.的影响
Time.realtimeSinceStartup
游戏从开始现在占用的时间 不受游戏暂停或后台运行的影响 都会继续计时
事件函数
Reset 被附加时和reset时调用
Awake 当整个场景运行时或 物体被实例化时调用
OnEnable 当场景启用时被调用
Disable 对象被禁用时调用
FixedUpdate 每秒固定调用60次(运动的可以放在此函数内)
Update 每一帧调用一次(与运行环境有关)
LateUpdate
OnTriggerXXX 触发器
OnCollisionXXX 碰撞器
yield WaitForFixedUpdate
OnMouseXXX
OnDrawGizmos
OnApplicationPause 运行场景时点击暂停按钮是发生
OnApplicationQuit 退出游戏时发生
awake one
Reset()的调用
ankeyDown 按下任何键 返回true
mousePosition
pingpong(float t ,float lenth)
t和length 之间来回
0到lenth 之间以 之间来回徘徊
重载 设置xx
MoveTowards(当前值 ,目标值 )
lerp(float a ,float b ,float t)
t0到1
当a=0 b =10
t=0 返回0
t=1返回10
t =0.5 返回5