当前位置:   article > 正文

Unity常用API_mathf.inverselerp

mathf.inverselerp

一、事件函数执行的先后顺序

FixedUpdate每秒执行固定次数,应该将处理跟物理相关的运动的代码放在FixedUpdate中。

Update和LateUpdate跟硬件和代码性能有关,每秒执行次数不固定。

二、Time类中的静态变量

 

图中红色为只读值,绿色为可读可写:

 

Time.time 表示从游戏开始到现在的时间,会随着游戏的暂停而停止计算。

Time.timeSinceLevelLoad 表示从当前Scene加载完成到目前为止的时间,也会随着暂停操作而停止。

Time.deltaTime 表示从上一帧到当前帧(上一帧所消耗的)时间,以秒为单位。

Time.fixedTime 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。

Time.fixedDeltaTime 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。

Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前N帧的时间加权平均的值。

Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,非常有用。

Time.frameCount  已渲染总帧数。

Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加,也不受timeScale影响。

Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。

Time.unscaledDeltaTime 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。

Time.unscaledTime 不考虑timescale时候与time相同,若timescale被设置,则无效。

三、创建游戏物体的三种方法

1、通过构造方法创建

GameObject go = new GameObject();

2、通过GameObject.Instantiate()方法实例化

3、通过GameObject.CreatePrimitive()方法创建基本的游戏物体

创建出来的物体可以通过AddComponent<>添加组件。

四、游戏物体间消息的发送和接收

BroadcastMessage()向所有子物体包括自身广播消息。

SendMessage()向自身发送消息。

SendMessageUpwards()向所有父物体包括自身广播消息。

五、MonoBehaviour类

继承层次:Object->Component->Behaviour->MonoBehaviour

注意:复选框控件(在编辑中)仅仅会阻止Start、Awake、Update、FixedUpdate和OnGUI函数的执行,如果这些函数中没有一个出现,则复选框就不会显示。

调用方法Invoke(可用于延时):

CancelInvoke() 取消在这个脚本上的所有调用

void Invoke(string methodName, float time)  在time时间内调用名字为methodName的函数

void InvokeRepeating(string methodName, float time, float repeatRate) 在time时间内调用名字为methodName的函数,此后每

repeatRate秒就调用一次该函数

bool IsInvoking() 该MonoBehaviour上是否有等候调用的函数

协程:

StartCoroutine(IEnumerator routine) 开启一个协程,利用yield语句暂停在某点,yield返回值指定了什么时机协程恢复。对于多帧执行一次的行为非常适合用协程解决,它几乎没有什么性能开销。该函数总是会立即返回,然而可以yield结果,这样可以等到协程执行完成返回。使用javascript不需要显示调用该函数,因为编译器已经为你调用了,而C#中必须显示调用。

StartCoroutine(string methodName, object value = null) 开启指定名字的协程。主要应用的场合是,当使用指定函数名字来开启协程时,就可以使用StopCoroutine来终止指定名字的函数。限制是仅能传递一个参数,而且有更高的运行时代价。

StopAllCoroutines() 终止运行在该MonoBehaviour上的所有协程。

StopCoroutine(string methodName) 终止运行在该MonoBehaviour上名字为methodName的协程。仅仅StartCoroutine的字符串开启的协程才可以使用该函数进行终止。

消息:

void Reset(); 当脚本第一次被挂到object上或用户点击Inspector视图中Reset按钮时,Reset函数被调用来初始化脚本属性。Reset函数仅可以在编辑模式下被调用,最常用于在Inspector视图中呈现好的默认值。

void OnValidate(); 当脚本被加载或Inspector中某个值被改变时,该函数被调用,仅能在编辑器状态下使用。用于确保在编辑器中修改数据,该数据可以保持在特定范围内。
void OnLevelWasLoaded(int level); 当一个新的level被加载之后调用该函数,可以做协程。可以在File->Build Settings中看到该level具体指的是哪个Scene。 

void Awake(); 游戏启动之前用于初始化任何变量和游戏状态,在脚本实例生命周期中仅被调用一次,不能做协程。Awake函数是在所有objects实例化之后被调用的,因而可以安全地同其它objects通信或查询等;同时,Awake函数是在任何Start函数之前被调用的,因而我们可以规定脚本的初始化顺序。objects之间Awake函数的调用没有先后顺序规定,因而可以利用Awake函数建立脚本之间的引用,再使用Start函数来回传递信息。(对于C#、Boo用户,当构造时组件序列化状态没有定义,就应该使用Awake代替构造函数来初始化)。

void Enable(); 只有object是激活状态下才可被调用,在object可用之后被调用,这通常发生于MonoBehaviour实例被创建时,不能做协程。 

void Start(); 如果脚本实例是enabled的,则Start函数在第一帧更新之前被调用,在脚本实例生命周期中仅被调用一次。不论脚本enabled与否,Awake函数都会调用;假如初始化期间脚本disabled,则Start函数就不会与Awake函数在同一帧中被调用。Awake函数和OnEnable函数一定是在Start函数之前调用(好处是:object A实例化代码依赖于object B实例化,B的实例化就应该在Awake阶段完成,A的实例化就在Start阶段完成)。注意:对于添加到场景中的objects,所有脚本的Start函数都会在任何脚本调用Update等函数之前被调用。但是,在gameplay期间实例化objects,就不能强制遵循这个规则了。

void OnDisable(); 当行为不可用或非激活时,该函数被调用。当对象被销毁时,或对于任何清理工作的代码,该函数同样可被调用。当编译完成之后重新加载脚本,该函数可被调用,脚本加载完成时调用OnEnable函数。该函数不可以做协程。 
void OnDestroy(); 在对象存在的最后一帧中,OnDestroy这个函数在所有帧更新之后被调用,该函数仅仅会在那些先前状态为active的对象上被调用。对象被销毁来响应Object.Destroy或关闭一个场景,该函数不可以是协程。

void FixedUpdate(); 假如MonoBehaviour是enabled时,该函数在固定帧率的每帧中被调用一次。比Update函数的调用更频繁;当帧率比较低时,每帧可被多次调用,如果帧率比较高,就可能不会被调用;所有的物理计算和更新都在FixedUpdate函数之后立即发生;当在FixedUpdate函数中计算物体移动时,不需要乘以Time.deltaTime,因为FixedUpdate函数是基于可靠的定时器,与帧率无关。 
void Update(); 假如MonoBehaviour是enabled时,该函数每帧被调用一次,是最主要最常用的帧更新函数。为了得到从上一帧调用Update函数到现在消耗的时间,需要使用Time.deltaTime。 
void LateUpdate(); 假如MonoBehaviour是enabled时,该函数每帧被调用一次,在Update函数之后执行;LateUpdate函数最常应用于第三人称的相机跟随。(如果将角色的移动和旋转放在Update函数中,则可以把相机的移动和旋转都放在LateUpdate函数,从而在相机追踪到角色位置之前,确保角色已经完成了移动。
注意:协程在所有Update函数完成后执行;若在LateUpdate中开启了一个协程,它将在LateUpdate之后渲染之前也会被调用。

void OnAnimatorIK(int layerIndex);动画组件在更新它内部Inverse Kinematics(IK)系统之前调用该函数。可用于设置IK目标位置和他们各自的权重。

void OnAnimatorMove(); 用于修改根运动而处理动画移动时调用。在状态机和动画计算完,OnAnimationIK之前,每帧都会被调用。

void OnAppllicationFocus(bool); 当玩家获得或失去焦点时,该消息被发送到所有游戏对象。该函数可以是协程,假如其作为协程来执行,在初始化帧期间会被用到两次:第一次用作前期消息通知,第二次发生在正常的协程更新步骤中。

void OnApplicationPause(bool); 当玩家暂停游戏,该消息会被发送给所有游戏对象。若暂停被检测到,当前帧执行后就调用OnApplicationPause函数,在正常的帧更新之间调用是有效的。在OnApplicationPause函数被调用后,增加额外的一帧来显示图像表明暂停状态。OnApplicationPause函数可以是协程,假如其作为协程来执行,在初始化帧期间会被用到两次:第一次用作前期消息通知,第二次发生在正常的协程更新步骤中。

void OnApplicationQuit(); 在应用退出之前所有的游戏对象都会调用该函数。在编辑器中当用户停止播放时它将被调用;在webplayer中,当网页关闭时被调用。注意,IOS应用通常暂停并不会退出,所以应该在IOS播放器设置中勾选“Exit on Suspend”,这样会使游戏退出而不是暂停。如果没有勾选就会调用OnApplicationPause函数。

void OnBecameInvisible();void OnBecameVisible(); 当object在任何相机中变得可见/不可见时被调用,该消息被发送到任何挂在渲染器上的脚本。使用这两个函数可以避免不必要的计算,仅当object可见时才进行相应的计算。它们可以是协程。当在编辑器中运行时,场景视图摄像机也会导致它们被调用。 

void OnCollisionEnter(Collision collision); 当该碰撞器/刚体开始接触到另一个刚体/碰撞器的时候,该函数被调用,可以做协程。和OnTriggerEnter函数相比,OnCollisionEnter的参数是Collision类而不是Collider。Collision类包含接触点,碰撞速度等信息,如果不需要在函数中使用这些碰撞信息,就不要考虑碰撞信息,这样可以避免不必要的计算。注意:碰撞事件仅仅当其中一个碰撞器中的也有一个non-kinematic刚体挂在时才会被发送。

void OnCollisionEnter2D(Collision2D collision); 当传进来的Collider和对象的Collider有接触时该函数被调用(仅限于2D物理)。

void OnCollisionExit(Collision collision); 当该碰撞器/刚体停止碰撞另一个刚体/碰撞器时被调用,可以做协程。和TriggerExit函数相比,OnCollisionExit 参数是Collision类而不是Collider。Collision类包含接触点,碰撞速度等信息,如果不需要在函数中使用这些碰撞信息,就不要考虑碰撞信息,这样可以避免不必要的计算。注意:碰撞事件仅仅当其中一个碰撞器中的也有一个non-kinematic刚体挂在时才会被发送。

void OnCollisionExit2D(Collision2D collision); 当传进来的Collider和对象的Collider停止接触时该函数被调用(仅限于2D物理)。

void OnCollisionStay(Collision collision); 对于每一个正在碰触其他刚体/碰撞器的碰撞器/刚体,该函数每帧都会被调用一次,可以做协程。和OnTriggerStay函数相比,OnCollisionStay参数是Collision类而不是Collider。Collision类包含接触点,碰撞速度等信息,如果不需要在函数中使用这些碰撞信息,就不要考虑碰撞信息,这样可以避免不必要的计算。注意:碰撞事件仅仅当其中一个碰撞器中的也有一个non-kinematic刚体挂在时才会被发送。

void OnCollisionExitStay2D(Collision2D collision); 当一个对象的Collider和这个对象的Collider正在碰撞时该函数被调用(仅限于2D物理)。

void OnControllerColliderHit(ControllerColliderHit); 当控制器执行时移动时碰到一个Collider上,该函数被调用。当它们碰撞到角色上时被用于推开对象。

void OnParticleCollision(GameObject); 当一个粒子撞到碰撞器上时该函数被调用。用于游戏对象受粒子碰撞时的伤害计算。

void OnConnectedToServer(); 当成功连接到服务器时客户端调用该函数。

void OnDisconnectedFromServer(NetworkDisconnection); 当与服务器连接中断或终止连接时,该函数被调用。

void OnFailedToConnect(); 由于某些原因尝试连接失败时,客户端调用该函数。

void OnFailedToConnectToMasterServer(NetworkConnectionError); 连接到主服务器有问题时服务器端或客户端调用该函数。

void OnMasterServerEvent(MasterServerEvent); 当收到来自主服务器报告事件,该函数被客户端或服务器端调用。

void OnServerInitialized(); 不论何时Network.InitializeServer被触发并完成,服务器会调用该函数。

void OnSerializeNetworkView(BitStream, NetworkMessageInfo); 用于定制脚本中变量的同步,从网络的视角来看。自动决定是否序列化的变量应该被发送或接收。

void OnPlayerConnected(NetworkPlayer); 不论何时玩家成功连接到服务器时,服务器端调用该函数。

void OnPlayerDisconnected(NetworkPlayer); 不论何时玩家与服务器失去连接时,服务器端调用该函数。

void OnNetworkInstantiate(NetworkMessageInfo); 使用Network.Instantiate,对象被网络实例化时被调用。

void OnPreCull(); 在相机剔除场景前被调用,剔除确定了哪些物体在相机中是可见的。仅当脚本挂在相机上并且是enabled时,该函数才会被调用。假如要修改相机的可视化参数(比如FOV,Transform等),就应该在这个函数中进行修改,此后场景中objects的可见性就取决于相机的参数了。

void OnWillRenderObject(); 如果物体可见并且MonoBehaviour是enabled时,在渲染每个经过剔除操作之后的物体之前,它将为每个相机调用一次。 

void OnPreRender(); 仅当脚本挂在相机上并且是enabled时,则在相机开始渲染场景之前被调用。假如在这个函数中修改了相机的可视化参数(比如FOV),那么这些参数只会在下一帧中起到作用。该函数可以是协程。 

void OnPostRender(); 在相机完成场景的渲染后被调用。与OnRenderObject不同,仅当脚本挂在相机上并且是enabled时,该函数才会被调用。该函数可以做协程。假如想要在所有相机和GUI渲染之后做操作,使用WaitForEndOfFrame协程。 

void OnRenderObject(); 在所有固定场景渲染之后被调用,此时你可以使用GL类函数或者Graphics.DrawMeshNow来画自定义的几何体。该函数和OnPostRender函数相似,除了一点:不论脚本挂在相机上与否,OnRenderObject函数都会在任何挂有定义了该函数的脚本的object上被调用。 

void OnRenderImage(RenderTexture, RenderTexture); 在场景渲染完成后被调用,用于对屏幕的图像进行后处理,该消息被发送到挂到相机上的所有脚本。该函数允许利用基于shader的过滤器对最终图像进行处理,传入源渲染纹理,终止于目标渲染纹理;当相机有多个图像过滤器时,按照图像顺序进行处理,前一个过滤器的目标渲染纹理作为下一个过滤器的源渲染纹理。

void OnGUI(); 假如MonoBehaviour是disabled时,该函数不会被调用。为响应GUI事件,该函数每帧被调用多次,每个事件就调用一次;执行时先响应布局和重绘事件,随后是为每一次的输入事件执行布局和键盘/鼠标事件。

void OnDrawGizmos(); 为了可视化的目的,在场景视图中绘制小图标。该函数使用相对于Scene视图的鼠标的位置,允许快速挑选场景中重要的objects,当然假如组件在inspector中collapsed,则该函数就不会被调用。 
void OnDrawGizmosSelected(); 同OnDrawGizmos,不过只有选中的物体执行。

void OnMouseEnter(); 当鼠标进入GUIElement或Collider时该函数被调用,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。可以做协程。

void OnMouseExit(); 当鼠标离开GUIElement或Collider时该函数被调用,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。可以做协程。

void OnMouseDown(); 当用户在GUIElement或Collider上按下鼠标时该函数被调用,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。可以做协程。

void OnMouseUp(); 当用户释放鼠标按键时,该函数被调用,即使鼠标已经不在和鼠标按下相同的一个GUIElement或Collider上时该函数被调用。可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。

void OnMouseUpAsButton(); 当用户释放鼠标按键时,该函数被调用,只在和鼠标按下相同的一个GUIElement或Collider上时该函数被调用。可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。

void OnMouseDrag(); 当用户在GUIElement或Collider上点击鼠标并一直按着时该函数被调用,按着鼠标的每一帧中该函数都会被调用,可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。

void OnMouseOver(); 当鼠标在GUIElement或Collider上时该函数被调用,按着鼠标的每一帧中该函数都会被调用,可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。

void OnTriggerEnter(Collider); 当碰撞器进入触发器时该函数被调用。该消息被发送给触发器碰撞器和碰到触发器的刚体(假如没有刚体就是碰撞器),但只有在其中一个碰撞器也有刚体挂载时,触发事件才会被发送。该函数可以做协程。

void OnTriggerEnter2D(Collider2D); 当另一个对象碰到这个对象上挂有的触发器碰撞器时,该消息被发送(仅仅2D物理适用)。

void OnTriggerExit(Collider); 当另一个碰撞器停止碰撞该触发器时该函数被调用。该消息被发送给触发器和碰撞触发器的碰撞器。注意,只有在其中一个碰撞器也有刚体挂载时,触发事件才会被发送。该函数可以做协程。

void OnTriggerExit2D(Collider2D); 当另一个对象离开这个对象上挂有的触发器碰撞器时,该消息被发送(仅仅2D物理适用)。

void OnTriggerStay(Collider); 对于每一个正在碰撞该触发器的碰撞器,该函数每帧被调用一次。该消息会被发送给触发器和碰撞该触发器的碰撞器,注意,只有在其中一个碰撞器也有刚体挂载时,触发事件才会被发送。该函数可以做协程。

void OnTriggerStay2D(Collider2D); 当另一个对象在该对象的触发器碰撞器内时该函数每帧被都会被调用。(仅仅2D物理适用)

void OnJointBreak(float);  当连接到同一游戏对象上的关节断裂时被调用。当外力高于关节的breakForce时,关节会断开。当关节断开时,该函数被调用,施加于关节处的断裂外力会被做为参数传入。当该函数完成后,关节会自动从游戏对象上移除。

六、Mathf类

Mathf.Abs  绝对值    计算并返回指定参数 f 绝对值。 

Mathf.Acos 反余弦 
static function Acos (f : float) : float     以弧度为单位计算并返回参数 f 中指定的数字的反余弦值。 

Mathf.Approximately近似 
static function Approximately (a : float, b: float) : bool     比较两个浮点数值,看它们是否非常接近, 由于浮点数值不精确,不建议使用等于来比较它们。例如,1.0==10.0/10.0也许不会返回true。 

Mathf.Asin反正弦 
static function Asin (f : float) : float     以弧度为单位计算并返回参数 f 中指定的数字的反正弦值。 

Mathf.Atan2反正切 
static function Atan2 (y : float, x :float) : float      以弧度为单位计算并返回 y/x 的反正切值。返回值表示相对直角三角形对角的角,其中 x 是临边边长,而 y 是对边边长。 
返回值是在x轴和一个二维向量开始于0个结束在(x,y)处之间的角。 

Mathf.Atan反正切 
static function Atan (f : float) :float      计算并返回参数 f 中指定的数字的反正切值。返回值介于负二分之 pi 与正二分之 pi 之间。 

Mathf.CeilToInt最小整数 
static function CeilToInt (f : float) : int     返回最小的整数大于或等于f。 

Mathf.Ceil上限值 
static function Ceil (f : float) : float      返回 f 指定数字或表达式的上限值。数字的上限值是大于等于该数字的最接近的整数。 

Mathf.Clamp01限制0~1 
static function Clamp01 (value : float) :float     限制value在0,1之间并返回value。如果value小于0,返回0。如果value大于1,返回1,否则返回value 。 

Mathf.Clamp限制 
static function Clamp (value : float, min :float, max : float) : float     限制value的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max,否则返回value 
static function Clamp (value : int, min :int, max : int) : int        限制value的值在min和max之间,并返回value。 

Mathf.ClosestPowerOfTwo最近的二次方 
static function ClosestPowerOfTwo (value :int) : int      返回距离value最近的2的次方数。 

Mathf.Cos余弦 
static function Cos (f : float) : float      返回由参数 f 指定的角的余弦值(介于 -1.0 与 1.0 之间的值)。 

Mathf.Deg2Rad度转弧度 
static var Deg2Rad : float     度到弧度的转化常量。(只读)    这等于(PI * 2) / 360。 

Mathf.Mathf.Rad2Deg 弧度转度 
static var Rad2Deg : float    弧度到度的转化常量。(只读)    这等于 360 / (PI * 2)。 

Mathf.DeltaAngle增量角 
static function DeltaAngle (current :float, target : float) : float      计算给定的两个角之间最短的差异。 

Mathf.Epsilon小正数 
static var Epsilon : float    一个很小的浮点数值。(只读)    最小的浮点值,不同于0。 
以下规则: 
-    anyValue + Epsilon = anyValue 
-    anyValue - Epsilon = anyValue 
-    0 + Epsilon = Epsilon 
-    0 - Epsilon = -Epsilon 
一个在任意数和Epsilon的之间值将导致在任意数发生截断误差。 

Mathf.Exp指数 
static function Exp (power : float) : float     返回 e 的 power 次方的值。 

Mathf.FloorToInt最大整数 
static function FloorToInt (f : float) :int     返回最大的整数,小于或等于f。 

Mathf.Floor下限值 
static function Floor (f : float) : float      返回参数 f 中指定的数字或表达式的下限值。下限值是小于等于指定数字或表达式的最接近的整数。 

Mathf.Infinity正无穷 
static var Infinity : float      表示正无穷,也就是无穷大,∞ (只读) 

Mathf.InverseLerp反插值       计算两个值之间的Lerp参数。也就是value在from和to之间的比例值。 

Mathf.IsPowerOfTwo是否2的幂 
static function IsPowerOfTwo (value : int): bool      如果该值是2的幂,返回true。 

Mathf.LerpAngle插值角度 
static function LerpAngle (a : float, b :float, t : float) : float      和Lerp的原理一样,当他们环绕360度确保插值正确。   a和b是代表度数。 

Mathf.Lerp插值 
static function Lerp (from : float, to :float, t : float) : float     基于浮点数t返回a到b之间的插值,t限制在0~1之间。      当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。 

Mathf.Log10基数10的对数 
static function Log10 (f : float) : float     返回f的对数,基数为10。 

Mathf.Log对数 
static function Log (f : float, p : float): float     返回参数 f 的对数。 

Mathf.Max最大值 
static function Max (a : float, b : float): float 
static function Max (params values :float[]) : float 
返回两个或更多值中最大的值。 

Mathf.Min最小值 
static function Min (a : float, b : float): float 
static function Min (params values :float[]) : float 
返回两个或更多值中最小的值。 

Mathf.MoveTowardsAngle移动角 
static function MoveTowardsAngle (current :float, target : float, maxDelta : float) : float 
像MoveTowards,但是当它们环绕360度确保插值正确。 
变量current和target是作为度数。为优化原因,maxDelta负值的不被支持,可能引起振荡。从target角推开current,添加180度角代替。 

Mathf.MoveTowards移向 
static function MoveTowards (current :float, target : float, maxDelta : float) : float 
改变一个当前值向目标值靠近。 
这实际上和 Mathf.Lerp相同,而是该函数将确保我们的速度不会超过maxDelta。maxDelta为负值将目标从推离。 

Mathf.NegativeInfinity负无穷 
static var NegativeInfinity : float      表示负无穷,也就是无穷小,-∞(只读) 

Mathf.NextPowerOfTwo下个2的幂 

Mathf.PingPong乒乓 
static function PingPong (t : float, length: float) : float 
0到length之间往返。t值永远不会大于length的值,也永远不会小于0。 
The returned value will move back and forthbetween 0 and length. 
返回值将在0和length之间来回移动。 

Mathf.PI圆周率 
static var PI : float      PI(读pai)的值,也就是圆周率(π)的值3.14159265358979323846...(只读) 

Mathf.Pow次方 
static function Pow (f : float, p : float): float     计算并返回 f 的 p 次方。 

Mathf.Repeat重复 
static function Repeat (t : float, length :float) : float 
循环数值t,0到length之间。t值永远不会大于length的值,也永远不会小于0。     这是类似于模运算符,但可以使用浮点数。 

Mathf.RoundToInt四舍五入到整数 
static function RoundToInt (f : float) :int 
返回 f 指定的值四舍五入到最近的整数。      如果数字末尾是.5,因此它是在两个整数中间,不管是偶数或是奇数,将返回偶数。 

Mathf.Round四舍五入 
static function Round (f : float) : float 
返回浮点数 f 进行四舍五入最接近的整数。      如果数字末尾是.5,因此它是在两个整数中间,不管是偶数或是奇数,将返回偶数。 

Mathf.Sign符号 
static function Sign (f : float) : float      返回 f 的符号。     当 f 为正或为0返回1,为负返回-1。 

Mathf.Sin正弦 
static function Sin (f : float) : float       计算并返回以弧度为单位指定的角 f 的正弦值。 

Mathf.SmoothDampAngle平滑阻尼角度 
static function SmoothDampAngle (current :float, target : float, ref currentVelocity : float, smoothTime : float,maxSpeed : float = Mathf.Infinity, deltaTime : float = Time.deltaTime) : float 
参数 
current 
当前的位置。 
target 
我们试图达到的位置。 
currentVelocity 
当前速度,这个值在你访问这个函数的时候会被随时修改。 
smoothTime 
the target faster. 
要到达目标位置的近似时间,实际到达目标时要快一些。 
maxSpeed 
可选参数,允许你限制的最大速度。 
deltaTime 
上次调用该函数到现在的时间。缺省为Time.deltaTime。 
随着时间的推移逐渐改变一个给定的角度到期望的角度。 
这个值通过一些弹簧减震器类似的功能被平滑。这个函数可以用来平滑任何一种值,位置,颜色,标量。最常见的是平滑一个跟随摄像机。 

Mathf.SmoothDamp平滑阻尼 
static function SmoothDamp (current :float, target : float, ref currentVelocity : float, smoothTime : float,maxSpeed : float = Mathf.Infinity, deltaTime : float = Time.deltaTime) : float 
参数 
current 
当前的位置。 
target 
我们试图达到的位置。 
currentVelocity 
当前速度,这个值在你访问这个函数的时候会被随时修改。 
smoothTime 
要到达目标位置的近似时间,实际到达目标时要快一些。 
maxSpeed 
可选参数,允许你限制的最大速度。 
deltaTime 
上次调用该函数到现在的时间。缺省为Time.deltaTime。 
描述 
随着时间的推移逐渐改变一个值到期望值。 
这个值就像被一个不会崩溃的弹簧减振器一样被平滑。这个函数可以用来平滑任何类型的值,位置,颜色,标量。

Mathf.SmoothStep平滑插值 
static function SmoothStep (from : float,to : float, t : float) : float 
和lerp类似,在最小和最大值之间的插值,并在限制处渐入渐出。 

Mathf.Sqrt平方根 
static function Sqrt (f : float) : float      计算并返回 f 的平方根。 

Mathf.Tan正切 
static function Tan (f : float) : float      计算并返回以弧度为单位 f 指定角度的正切值。

七、Quaternion类

常用变量:

identity    不旋转

eulerAngles     将四元数转换成欧拉角

常用方法:

Euler    将欧拉角转换成四元数

LookRotation    设置朝向

 

 
  1. Vector3 dir = enemy.position - player.position;

  2. dir.y = 0;

  3. player.rotation= Quaternion.LookRotation(dir); //设置Player朝向Enemy

Slerp      插值(适用于球形有弧度或角度的插值)

 

 

 

  1. Vector3 dir = enemy.position - player.position;

  2. dir.y = 0;

  3. Quaternion target = Quaternion.LookRotation(dir);

  4. player.rotation = Quaternion.Slerp(player.rotation, target, Time.deltaTime);

八、Rigidbody

position              如果使用Rigidbody.position更改Rigibody的位置,则在下一个物理模拟步骤之后将会更新Transform。这比使用Transform.position更新位置要快,因为后者将导致所有附加的Colliders重新计算它们相对于Rigidbody的位置。如果想连续移动一个刚体,使用MovePosition来代替。

MovePosition     调用Rigidbody.MovePosition会导致渲染的任何中间帧中两个位置之间的平滑过渡。如果要在每个FixedUpdate中连续移动刚体,则应该使用此选项。    如果想将一个刚体从一个位置直接传送到另一个位置,不需要渲染中间位置,使用position设置位置。       如果刚体is Kinematic设置为false,调用Rigidbody.MovePosition还是会将一个刚体从一个位置直接传送到另一个位置。

 

 
  1. playerRigidbody.position = playerRigidbody.position + Vector3.forward * Time.deltaTime * 100;//使用Rigidbody.position更改Rigibody的位置

  2. playerRigidbody.MovePosition(playerRigidbody.position + Vector3.forward * Time.deltaTime * 100);//使用MovePosition来代替rotation

rotation、MoveRotation和以上相同。

 

 

 

AddForce    给刚体添加一个力(指定方向和大小)。

九、Application

dataPath   包含游戏数据文件夹的路径,不同平台路径不同。

streamingAssetsPath    在Unity项目的Assets下创建streamingAssets文件夹,保存包括视频、音频、AssetBundle资源,这些资源不会被打包。

http://blog.csdn.net/u011325034/article/details/49327225

http://www.jianshu.com/p/617789c9919a

https://www.cnblogs.com/colve/p/5149847.html

.........

十、SceneManager 

sceneCount场景的总数。

sceneCountInBuildSettings在BuildSettings中的场景数量。

CreateScene     创建一个空的新场景并指定名称。

GetActiveScene获取激活的场景。

GetSceneAt获取在场景管理列表添加场景的索引。

GetSceneByName    通过场景添加到场景管理器的指定名称查找该场景。

GetSceneByPath  查找所有给定资源路径并添加到SceneManager中的场景。

LoadScene 通过在Build Settings中它们的名称或索引加载场景。

LoadSceneAsync  在后台异步加载场景。

MergeScenes       该属性将场景资源合并到destinationScene。该函数合并场景资源内容到目的场景并删除原场景资源。所有根资源场景下的物体移动到根目的场景目录下。注意:该函数是有破坏性的:当资源合并完成后原有资源场景将会被立刻销毁。

MoveGameObjectToScene  移动一个物体从它当前场景到一个新的场景中。它必须要求该物体在当前场景的根目录下。

SetActiveScene  设置被激活的场景。

UnloadScene   卸载所有和指定场景关联的物体。

 

另:

1、Event Function:事件函数

 

  1. Reset() :被附加脚本时、在游戏物体的组件上按Reset时会触发该事件函数
  2. Start() :在游戏初始化时会执行一次
  3. Update() :每一帧都会运行这个方法
  4. FixedUpdate(): 会在指定帧调用该方法多少次
  5. LateUpdate(): 晚于Update的运行顺序,但是FPS和Update是一样的
  6. Awake() Start() : 都是在游戏物体初始化运行一次,但是Awake的运行顺序高于Start的,并且只要脚本中存在Awake方法,则无论是否挂载了该脚本都会执行该方法
  7. OnEnable(): 当将物体的SetActive设置为true时就会自动调用调用该方法
  8. OnDestory(): 当关闭游戏则会调用该方法

 

2、Time时间类函数:

 

  1. Time.time 表示从游戏开发到现在的时间,会随着游戏的暂停而停止计算。
  2. Time.timeSinceLevelLoad 表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止。
  3. Time.deltaTime 表示从上一帧到当前帧时间,以秒为单位。【一般用来控制角色、动画的运动】
  4. Time.fixedTime 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。
  5. Time.fixedDeltaTime 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。
  6. Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。
  7. Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,回放等、非常有用。如果游戏中控制运动的都是使用了Time.deltatime的话,则可以通过设置Time.timeScale=0来暂停其运动等。
  8. Time.frameCount 总帧数
  9. Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加。【一般用作性能测试】
  10. Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。
  11. Time.unscaledDeltaTime 以秒计算,完成最后一帧的时间 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。
  12. Time.unscaledTime 从游戏开始到现在所用的时间 不考虑timescale时候与time相同,若timescale被设置,则无效。

 

3、GameObject类:

 

【1】、创建游戏物体的三种方法:

 

  1. 通过其构造器来创建 GameObject go=new GameObejct("游戏物体名"); //一般是用来创建空的游戏来存放其他东西的。
  2. Instantiate GameObject.Instantiate(prefab) //根据Prefab或者是另外一个游戏物体来创建(克隆Colon),可以实例粒子、等其他的游戏物体,很是常用的
  3. CreattePrimitive GameObject.CreatePrimitive(PrimitiveType.**) //创建原始的游戏物体,基本的几何体

 

【2】、 为游戏物体添加组件, 其中组件可以是我们自己自定义的脚本GameObject.AddComponent<组件名>

 

【3】、属性、变量:

 

  1. GameObject.activeInHierarchy 游戏物体是否处于激活状态,与父类有关,父类被取消激活,则子类也是取消激活的
  2. GameObject.activeSelf 自身的激活状态,与父类无关,只与自身有关。【控制组件的激活与取消激活则使用.enable=false/true】
  3. GameObject.tag 游戏物体的tag标签,具体的由程序员自定义设置
  4. GameObject.SetActive(false/true) 通过参数的控制来设置其游戏物体的激活状态,true为激活状态,反之为取消激活状态。

 

【4】、UnityEngine.Object中的共有方法与变量

  1. name: 名字,调用该变量,则无论是通过GameObject还是Component都是返回游戏物体的名字
  2. Destroy() :删除游戏物体,但是不会立马在unity中删除,而是会先进行回收,等确定没对象使用的时候,在进行删除
  3. DontDestroyOnLoad() : 当加载新的场景的时候,不删除这个场景中的某个游戏物体
  4. FindObjectType<>
  5. FindObjectsType<> : t通过类型来进行查找,是进行全局的查找,则就是在整个场景中进行查找
  6. FindGameObjectWithTag :如果查到的是多个,则只返回查找到的第一个
  7. FindGameObejctsWithTag 返回查找到的游戏物体集合

 

【5】、消息的发送

  1. BroadcastMessage() 广播发送消息,则该物体上对应的方法会被调用,同时这个游戏物体上的子物体上对应的方法也会被调用的
  2. SendMessage() 发送消息,只会对这个游戏物体中脚本上的方法发送消息
  3. SendMessageUpwards() 广播发送消息,但是和BroadcastMessage()是相反的,在调用自身的方法时也会向上传递,调用其父类的方法

 

【6】、游戏组件的查找

 

  1. Cube cube = target.GetComponent<Cube>(); 返回一个对应的组件,如果有多个,则只返回第一个
  2. Cube[]cc= target.GetComponents<Cube>(); 返回该游戏物体上所有符合条件的组件,返回一个组件数组
  3. Cube[] xx = target.GetComponentsInChildren<Cube>(); 返回该游戏物体上的对应组件,同时返回该游戏物体的子类上对应的组件
  4. Cube[] yy = target.GetComponentsInParent<Cube>(); 返回该游戏物体上的对应组件,同时返回该游戏物体的父类上对应的组件

 

4、MonoBehaviours的类:

 

【1】、继承的变量成员

 

  1. enabled: 返回该组件是否被激活或者是被禁用,可以通过该变量来进行设置
  2. isActiveAndEnabled: 只能返回该组件是否激活的标志位,不能设置该变量,为只读的
  3. tag :该组件所对应的游戏物体的标签
  4. name :该组件所对应的游戏物体的名字
  5.  

【2】、Invoke等方法、变量:将添加要调用的方法添加到等待队列中,然后等待用户设定的时间后,进行队列中的方法调用。

 

  1. Invoke("方法1",float time): 在等待time的时间后调用方法1
  2. bool i= IsInvoking("方法1") 返回bool值,如果方法被添加到队列中,但没有被运行则返回true,如果经过一段时间后该方法被调用了则会返回false;
  3. InvokeRepeating("方法1",time,rate): 等待time时间后,会重复开始运行方法1,每rate秒运行一次。
  4. CancelInvoke() 会暂停通过Involve/InvokeRepeating的运行,但是一般来说CancelInvoke会和InvokeRepeating组合调用。参数由自己设定

 

 

扩充: 在脚本的类前添加[ExecuteInEditMode]:则该脚本不用按游戏运行按钮就会开始编译,只限在编辑模式里面

在脚本的共有变量前添加[HideInInspector]:则该共有变量不会在Inspector面板进行显示

 

5、Coroutines:协程:

 

1、定义协程:IEnumerator 方法名()

{

yield return 0/null ;

yield return new WaitForSeconds(1.0f); //等待一定时间在运行下面的代码

}

2、开启协程:StartCoroutines(方法名());

说明:协程开启会继续执行下面代码,不会等协程方法运行完再执行接下来的方法

 

3、开启与关闭协程时,StartCoriutine(参数)、StopCoroutine(参数) 其中的参数要互相对应,如果传递的是方法名,则两个方法中的参数就要是方法名,如果是IEnumerator的返回值,则其中两个方法发的参数就要是IEnumerator的返回值

1、 private IEnumerator coroutine;

coroutine = WaitAndPrint();

StartCoroutine(coroutine);

StopCoroutine(coroutine);

 

2、StartCoroutine("WaitAndPrint");

StopCoroutine("WaitAndPrint");

4、StopAllCoroutines() 停止所有的协程,不管你是怎么调用的

 

6、OnMousexx鼠标触发事件: 如果是通过Collider进行触发检测的话,则要在设置中打开允许进行射线检测。

 

  1. OnMouseDown(): 当鼠标按下的时候触发,按一次触发一次
  2. OnMouseDrag(): 当鼠标按住不放的时候一直触发,是每一帧进行触发
  3. OnMouseUp(): 当鼠标抬起的时候触发,只执行一次
  4. OnMouseEnter(): 当鼠标进入的时候触发,进入一次触发一次
  5. OnMousetOver(): 当鼠标在触发物体的上面时,则一直触发
  6. OnMouseExit(): 当鼠标移出的时候触发
  7. OnMouseUpAsButton() 相当于是按钮的功能,当鼠标在同一个游戏物体上按下抬起的时候才会触发,按下与抬起不在同一个游戏上的话则不会进行触发。

 

7、Mathf类:所有的成员均为静态的

Mathf.Abs() 返回绝对值的

Mathf.Ceil() 向上取整的,10.1--->11

Mathf.Clamp(value,min,max) 如果value的值在min--max之间的话就返回value,但是如果value的值小于min,则返回min,如果value的值大于max,则返回max,一般是用在控制角色血量,当玩家的血量减少的时候,不会出现出现低于0和大于100的情况 hp= Mathf.Clamp(hp,0,100);

Mathf.ClosePowerOfTwo(value): 取得离value的2次方最近的值

Mathg.DeltaAngke: 取得两个角度之间的最小夹角

Mathf.Floor 向下取整

Mathf.Pow(i,j) 取得i的j次方

Mathf.MoveToWards() 一般用来做移动控制,是匀速的运动,加速度固定的

Mathf.Lerp() 差值运算,一般是用来控制动画、运动,越往后运行的越慢的。

Mathf.PingPong(t,maxValue) 类似乒乓球的来回运动,起始 值是0,通过t变量来控制值由0向maxValue移动,当t大于maxValue的时候又向0进行移动,然后就这样的来回往复运动,一般t变量用时间Time.deltatime来进行控制的。

 

8、Input输入类:

GetKey() 按键一直按着时触发

GetKeyDown 按键被按下那一刻进行触发

GetKeyUp 按键被按下后抬起时触发

 

GetMouseButton(0/1/2) 1:左键 2:右键 3:中键 鼠标一直按着时触发

GetMouseButtonDown() 鼠标按下那一刻触发、

GetMouseButtonUp() 鼠标抬起的那一刻时触发

 

GetButtonDown()

GetButton()

GetButtonUp() 这三个的参数是用户自定义的虚拟按键进行触发,其他的和上面的一样

 

GetAxis("虚拟轴名") 通过按下的虚拟轴来返回-1~1之间的值,开始值是0,然后向-1/1进行渐渐的变化,有一定的加速度。一般用来控制运动的,比如是赛车的加速运动等

GetAxisRaw() 其他的和GetAxis差不多,就是少了渐变效果,返回值只有 0 1 -1三个

 

anyKeyDown 当任何按键被按下(包括鼠标按键)时返回true

anyKey 当任何按键被按着(包括鼠标)时返回true

mousePosition 返回鼠标在屏幕上的像素坐标,【屏幕坐标】z轴衡为0的

 

9、Vector2;二维向量

 

magnitude: 返回向量的长度

normalized; 返回这个向量长度为1的矢量,不管这个向量多长,也是返回1的矢量,只是返回值,不对原向量的值产生影响

Normalize() 无参数的,也是向量化,但是调用该方法会改变原向量值,使其的值被向量化 了

ClampMagnitude() ;将一个向量限制在参数中指定的长度之间

MoveToWards() 用来做匀速的运动,由一个位置向另一个位置进行移动

sqrMagnitude 对求向量的的长度时不进行开平方根运算了,减少性能的损耗,一般是用来比较两个向量的长度大小的。

其他的参考API文档即可,较为简单。

扩充:向量是结构体,为值类型,修改其中的变量的时候要整体进行修改,不能单独的进行单个变量的赋值修改

 

10、Vector3:三维变量

Cross() 插乘运算【左手法则】,通过两个向量来获得另一个向量的方向,然后进行相关的判断

 

Project() 投影运算

 

Reflect() 反射运算

Slerp() 按照角度进行插值,与lerp的按照位置信息进行插值的,一般用在炮台的旋转,使旋转的更加平滑

 

11、Random随机数类:

 

InitState(): 通过参数指定的种子,然后再调用Range()产生随机数的时候会依据种子来进行生成,则每一次运行所生成的随机数都是一样的,是伪随机数。一般要生成的随机数不同,可以设置参数为System.DataTime.Now.Ticks:通过时间戳来完成

 

insideUnitFCircle :在单位为1的园内随机生成一个位置信息,如果要在更大的圆中生成,则可以在后面*圆的半径信息。一般用来控制随机生成敌人的位置信息

insideUnitSphere: 在单位为1的球内随机生成一个位置信息,如果要在更大的球中生成,则可以在后面*圆的半径信息。

 

 

12、四元数 Quaternion:

 

欧拉角【eylarAngles】与面板中的值对应和四元数【rotation】之间是可以进行转换的,一般欧拉角是用来让用户可以直观的看到的,而四元数是用来控制内部的运算 的。

 

.eulerAngles 将四元数转变为欧拉角

Euler() 将欧拉角转变为四元数

 

.LookRotation() 让玩家通过设置四元数来进行望向敌人的旋转,将向量方向转变为四元数

 

Vector3 temp = enemy.position - player.position; //获得两个位置信息之间的变量,是主角望向敌人,所以要设置向量的方向是指向敌人的

enemp.y = 0; //如果不想主角在望向他的时候出现低头的情况,也就是y轴的值出现了变化了。

player.rotation= Quaternion.LookRotation(temp);

slerp() 在做朝向的旋转的时候,不建议使用lerp,而是建议使用slerp,使其的旋转朝向更为平滑,更加的自然

Quaternion target= Quaternion.LookRotation(temp);

player.rotation = Quaternion.Slerp(player.rotation, target, Time.deltaTime); //插值的缓慢旋转

 

 

13、Rigidbody:刚体组件,控制角色的移动

.position: 可以通过刚体来控制运动,在控制运动方面,使用rigibody.positon比transform.porition计算要快的多,相关的物理计算也是在刚体中计算好了,但是不建议使用这个方法来持续的控制物体的运动,不平滑,控制一两次的时候还可以使用

MovePosition() 对position的优化,其中利用了插值运算,一般持续运动的则使用这个方法,不出现卡顿的现象

,rotation:

MoveRotation 用来控制刚体的旋转的,一般不建议使用rotation,比较耗性能,建议使用MoveRotation(),然后配合Quaternion,slerp()进行使用,使其更加的平滑

AddForce() 为刚体添加力,一般可以用在赛车游戏中,当进行短时的加速则可以给以限定时间的AddForce方法

 

14、Camera;相机组件:

当相机的标签是main cream时,可以通过Camer.main来进行主相机cream组件的查找射线,用来检测鼠标在屏幕上的位置信息,以及触碰到什么

Ray ray = cameraMain.ScreenPointToRay(Input.mousePosition); //获得相机到鼠标之间的射线

RaycastHit hit; //用来存放射线检测到的游戏物体的信息的

bool temp = Physics.Raycast(ray, out hit); //进行射线检测

 

15、Application

SreeamingAcsets: 该文件下的资源不会被压缩,导入是什么类型还是什么类型,【主要是音频、视频资源】

 

dataPath: 工程文件路径

streamingAssetsPath: 可以通过文件流来进行读取的文件路径

persistenDataPath :可以实例的文件路径

tempporaryCachePath :临时的文件路径

 

Application.OpenURL("") 打开指定的网址

Application.Quit() 退出游戏的运行

.CapturScreenshot("游戏截图") 用来截图的,字符串为截图fileName

 

 

Application.identifier 标识名

.companyName 公司名

productName 产品名

instalMode 安装包名

isEditor 是否在编辑器模式

isFocused 是否在焦点

isMoliePlatform 是否是移动平台

isPlaying

isWebPlayer

platform 编辑器的平台

unityVersion unity版本号

version 项目文件版本号

runInBackground 是否可以在后台运行

 

 

UnityEditor.EditorApplication.isPlaying=false; //在编辑器模式下推出编辑状态

 

 

 

16、SceneManager场景类

 

SceneManager.LoadScene() 加载下一个场景,一般是用在另一个场景不是太大的情况下

SceneManager.LoadSceneAsync() 异步加载下一个场景,返回AsyncOperation类型,里面包含了加载的信息,加载的进度条等等。可以让用户缓解等待加载场景的时间

sceneCount 获得当前加载的场景个数

sceneCountInBuildSettings 在Build面板中加载的场景个数

GetActiveScene() 获取已经加载的当前场景的信息

GetSceneAt(index) 加载index索引的场景

 

当加载新的场景的时候会触发下面的事件:

activeSceneChanged 当有新场景被加载的时候就会调用这个事件

sceneLoaded 当有新场景加载完成的时候就会触发这个事件

 

 

扩充:事件的注册时通过加方法来进行注册的:

SceneManger.activeSceneChanged+=OnAcitiveScenenChanged;

 

17、射线检测:一般射线检测要在射线检测的范围内,并且被检测物体要有Collider

 

Ray ray=new Ray(起点,方向);

PaycastHit hit; //hit中存放的是射线检测的碰撞信息

bool temp=Physics.Raycast(ray,out hit); //具体的重载方法边用边查

 

Ray ray = new Ray(this.transform.position + transform.forward, transform.forward); //创建射线

RaycastHit hit; //存储射线检测到的游戏物体信息

if(Physics.Raycast(ray,out hit)) //通过返回值来判断射线是否检测到相关的物体了

{

Debug.Log(hit.collider.gameObject.name);

}

扩充:

Raycast;检测的是射线碰撞到的第一个物体,不具有穿透性

RaycastAll:返回的是RaycastHit数组,具有穿透性,可以返回检测到的多个游戏物体

 

18、代码监听触发事件:

 

<Button>().onClick.AddListener(方法名); //当触发button组件,则会触发指定的方法名的方法

 

通过实现接口来注册监听事件: using UnityEgine.EventSystems; 导入命名空间

 

 

IPointerDownHandler 鼠标按下的事件,具体的接口参考手册

Raycast Target: 如果取消勾选则不做事件监听了,则无法实现检测了

 

19、www类,下载 是用来在网络中下载资源的,

 

public string url = "http://img.taopic.com/uploads/allimg/120727/201995-120HG1030762.jpg";

IEnumerator Start()

{

WWW www = new WWW(url);

yield return www;

Renderer renderer = this.GetComponent<Renderer>();

renderer.material.mainTexture = www.texture;

}

 

 

20、Touches触摸事件:

 

Input.touches: 返回放在屏幕上的手指信息,返回数组

Touch touch1=Input.touches[0];

touch1.position;

TouchPhase pahse=touch1.phase phase 是用来返回手指的状态的

 

21、Debug.DrawRay(ray.oridin,ray.direction) 绘制射线,第一个参数是原点,第二个是方向

 

22、CharacterController角色控制器

 

.SimpleMove(【vector3】) 简单移动

.isGrounded 判断是否到地面上,bool值

.Move() 与simpleMove的区别是要*Time.deltatime、而且simpleMove会使用自带的重力

OnCOntrollerColliderHit(ControllerCollidrHit hit) 当有碰撞到其他的碰撞器的时候会触发这个事件函数【hit保存碰撞到的物体信息】

 

23、Mesh的设置:

 

material mesh指定人是什么样子的,material指定人的肤色是什么样子的

 

24、API变更:

 

弃用:Application.LoadLevel();

新的:SceneManager.LoadScene(); 加载新的场景

弃用

新的:Scene scene=SceneManager.GetActiveScene(); //获得当前活动场景的信息

SceneManger.LoadScene(scene.buildIndex) //重新加载当前场景

 

OnLevelWasLoaded() 当场景被加载的时候调用,被弃用了

改成事件了:sceenLoaded

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/108246?site
推荐阅读
相关标签
  

闽ICP备14008679号