Unity API常用方法和类(一)
课程前言基础
file->bulid setting :设置平台
manual手册官方教程
scripting api文档
事件函数
fixedTime:游戏运行一共占用的时间
frameCount:帧数
realtimeSinceStartup:游戏从开始到现在一直占用的时间,游戏暂停的话会继续开始计时
smoothDeltaTime
timeSinceLevelLoad:游戏运行一共占用的时间
Time类:
Time.realtimeSinceStartup:游戏从运行到现在的时间间隔(游戏暂停也会进行计时)
Time.deltaTime 指一帧的运行时间,根据电脑配置和代码运行效率这一帧的运行时间会发生变化
Time.fixedDeltaTime 指一帧的运行时间,这一帧的运行时间是固定的,默认是0.02s,可以在Edit->Project Settings->Time中的Fixed Timestep修改。
FlexdUpdate 每秒(60)就60次
OnTrigger 触发器
OnCollision 碰撞器
OnMouse XX 输入事件 鼠标操作有关的事件
Scene rendering 场景渲染有关的
Delteime 延迟事件
deltatime 每一帧的时间间隔
FrameCount 帧数
realtimeSinceStartup 游戏开始到现在占用的时间
游戏运行一共占用时间
【realtimeSinceStartup 暂停还会记时】
【timeScale 时间比例】
事件函数的执行时机和先后顺序
Time类中静态变量
cube.transform.Translate(Vector3.right * Time.deltaTime);
Time.deltaTime用于平滑运动
gameObject.Translate已改为gameObject.Transform.Translate
Time.timeScale = 0;//统一控制一切与time.deltatime有关的运动,可作用于游戏暂停(=0时)慢放(0到1之间),以及加速,
realTimeSinceStartup用于测试游戏性能
Invoke用于调用方法(“方法”,时间(延迟几秒调用))
InvokeRepeating调用一个方法(“方法”,时间(从第几秒开始),时间(几秒调用一次))
CancellInvoke();取消所有的调用函数;
乘以Time.deltatime.控制动画、运动相关。
TimeScale=0用于暂停游戏。
TimeScale=0.5可用于慢动作回放。
(deltatime一般都会×TimeScale,TimeScale默认1)
Time.realtimeSinceStartUp可用于性能测试。
(time2-time1)即可
Vector3三位矢量
forward前进
创建物体的三种方法
1、new GameObject(“对象名称”);
2、实例化预制体(克隆)
GameObject.Instantiate(prefeb);
3、创建一个原始的图形
GameObject.CreatePrimitive();
代码为游戏物体(GameObject) AddComponent
gameobject.AddComponent
给物体添加组件:GameObject.addComponent();
如何禁用和启用一个游戏物体
activeInHierarchy:游戏物体是否处于**状态.父物体false,它也是false.
activeSelf:父物体为false,它也可以是true.
禁用和启用游戏物体:
SetActive();true/false
查看游戏物体是否处于**状态
activeInHierarchy:
activeself:
transform每个物体都有,不能被移除。
tag区分场景中物体。
activeInHierarchy判断物体是否处于**状态。
go.SetActive(true),用于**关闭/打开。
transform(必须有的位置组件)
gameObject.SetActive(true/false);
GameObject、Component和Object的千丝万缕的关系
一个游戏有多个场景组成,一个场景有多个游戏物体(GameObject)组成,一个游戏物体又多个组件组成(Component)。
组件:Transform,Rigidboy,MeshRender,MeshFilter,
Collider,NavmeshAgent,Animation,Animator,自定义脚本(Script)
游戏:由多个场景组成
场景:由多个游戏物体组成
游戏物体:由多个组件组成
UnityEngine下Object用有的静态方法
Destroy():可以销毁游戏物体和组件;也可等待一段时间后销毁
DontDestroyOnLoad(gameobject):设置共享的游戏物体,再调整场景是不销毁
FindObjectOfType()根据类型获取组件
FindObjectsOfType()根据类型返回组件数组
GameObject独有的静态方法
GameObject.Find(“Main Camera”);
GameObject.FindGameObjectsWithTag(“Main Camera”);
GameObject.Find(“Main Camera”);
GameObject.FindGameObjectsWithTag(“Main Camera”);
游戏物体间消息的发送和接收
GameObject中需要对象访问的方法:
GetComponent类(获取组件)
SendMessage类(消息发送/接收类)
SetActive
CompareTag
消息类:
BroadCastMessage(方法名)
注:自身和子物体的所有该方法都会被调用。减少引用,减少耦合性。
SendMessage(方法名)
注:只会搜寻自身的该方法,不会搜寻子物体上是否有该方法。
SendMessageUpWord(方法名)
注:自身+父物体。
//发送该节点的所有子节点
GameObject.BroadcastMessage(string methodName, object parameter = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);
//发送给物体本身的广播
GameObject.SendMessage(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);
//发送给发节点的所有基(父)节点
GameObject.SendMessageUpwards(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);
得到组件各种方法函数:
GetComponent<组件类型>();
GetCompoents<组件类型>();
GetCompoentsInChilren<组件类型>();
GetComponentsInChildren<组件类型>();
GetComponentInParent<组件类型>();
GetCompoentsInParent<组件类型>();
旋转:Slerp 或Lerp
Vector3 dir =enemy.potation-player.potation;
dir.y=0;
Quaternion target=Quaternine.LookRotation(dir);
player.rotation=Quaternion.Slerp(player.rotation,target,Time.deltatime);