name 对象名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectsOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
Component
类,继承自Object。音频数据的容器。全部附加到游戏物体上的对象的基类。dom
变量
◆ var animation : Animation编辑器
描述:附加到这个GameObject的Animation。(没有则为null)ide
◆ var audio : AudioSource函数
描述:附加到这个GameObject的AudioSource。(没有则为null)
audio.Play();工具
◆ var camera : Cameraoop
描述:附加到这个GameObject的Camera。(没有则为null)性能
◆ var collider : Collider字体
描述:附加到这个GameObject的Collider。(没有则为null)
collider.material.dynamicFriction =1;动画
◆ var constantForce : ConstantForce
描述:附加到这个GameObject上的ConstantForce(没有则为null)。
◆ var gameObject : GameObject
描述:这个组件所附加的游戏物体。组件老是附着在游戏物体上。
print(gameObject.name);
◆ var guiText : GUIText
描述:附加到这个GameObject上的GUIText(没有则为null)。
guiText.text = "Hello World";
◆ var guiTexture : GUITexture
描述:附加到这个GameObject上的GUITexture(只读)(没有则为null)。
◆ var hingeJoint : HingeJoint
描述:附加到这个GameObject的HingeJoint(没有则为null)。
hingeJoint.motor.targetVelocity = 5;
◆ var hingeJoint : HingeJoint
描述:附加到这个GameObject的HingeJoint(没有则为null)。
◆ var light : Light
描述:附加到这个GameObject的Light(没有则为null)。
◆ var networkView : NetworkView
描述:附加到这个GameObject的NetworkView(只读)(没有则为null)。
networkView.RPC("MyFunction", RPCMode.All, "someValue");
◆ var particleEmitter : ParticleEmitter
描述:附加到这个GameObject的ParticleEmitter(没有则为null)。
particleEmitter.emit = true;
◆ var renderer : Renderer
描述:附加到这个GameObject的Renderer。(没有则为null)
◆ var rigidbodyr : Rigidbody
描述:附加到这个GameObject的rigidbody。(没有则为null)
◆ var tag : string
描述:标签能够用来标识一个游戏物体。标签在使用前必须在标签管理器中定义。
◆ var transform : Transform
描述:附加到这个GameObject的Transform。(没有则为null)
transform.Translate(1, 1, 1);
函数
◆ function BroadcastMessage (methodName : string, parameter : object = null, options :SendMessageOptions = SendMessageOptions.RequireReceiver) : void
描述:在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName方法。经过使用零参数,结婚搜方法能够选择忽略parameter。若是options被设置为SednMessageOptions.RequireReceiver,那么若是这个消息没有被任何组件接受时,将打印一个错误信息。
//使用值5调用ApplyDamage
BroadcastMessage ("ApplyDamage", 5.0);
//每一个附加到该游戏物体及其全部子物体上含有ApplyDamage函数的脚本都会被调用
function ApplyDamage (damage : float)
{
print (damage);
}
◆ function CompareTag (tag : string) : bool
描述:这个游戏物体有被标签为tag吗?
//当即销毁触发器,销毁任何进入到触发器的碰撞器,这些碰撞器被标记为Player
function OnTriggerEnter (other : Collider)
{
if (other.CompareTag ("Player"))
{
Destroy (other.gameObject);
}
}
◆ function GetComponent (type : Type) : Component
描述:若是游戏物体上附加了这个组件,则返回一个Type类,若是没有则返回null。
//等同于Transform curTransform = transform
var curTransform : Transform = GetComponent (Transform);
//你能够像访问其余组件同样的访问脚本组件
function Start ()
{
var someScript : ExampleScript = GetComponent (ExampleScript);
someScript.DoSomething ();
}
for c#
public class Something : MonoBehaviour
{
void Start()
{
ExampleScript someScript = GetComponent<ExampleScript>();
someScript.DoSomething ();
}
}
◆ function GetComponent (type : string) : Component
描述:若是游戏物体上附加了这个组件,则返回一个Type类,若是没有则返回null。处于性能缘由,最好用Type调用GetComponent而不是字符串。不过有时你可能没法获得Type。例如当是同从Javascript中访问c#时。这时你能够简单的经过名称而不是类型访问该组件。
//为了访问附加在同一物体上的脚本中的公有变量与函数
script = GetComponent(ScriptName);
script.DoSomething ();
◆ function GetComponentInChildren (t : Type) : Component
描述:返回type类型组件,这个组件位于GameObject或任何它的子物体上,使用深度优先搜索。只有激活的最贱会被返回。
var script : ScriptName = GetComponentInChildren(ScriptName);
script.DoSomething ();
for c#
ScriptName script = GetComponentInChildren<ScriptName>();
script.DoSomething ();
◆ function GetComponents (type : type) : Component[]
描述:返回GameObject上全部type类型组件。
//关闭该游戏物体铰链上的全部弹簧
var hingeJoints = GetComponents (HingeJoint);
for (var joint : HingeJoint in hingeJoints)
{
joint.useSpring = false;
}
for c#
HingeJoint[] hingeJoints = GetComponents<HingeJoint>();
for (HingeJoint joint in hingeJoints)
{
joint.useSpring = false;
}
◆ function GetComponentsInChildren (t:Type,includeInactive:bool=false) : Component[]
描述:返回GameObject上或其子物体上全部type类型组件。
//关闭该游戏物体极其子物体上的铰链上的全部弹簧
var hingeJoints = GetComponentsInChildren (HingeJoint);
for (var joint : HingeJoint in hingeJoints)
{
joint.useSpring = false;
}
for c#
HingeJoint[] hingeJoints = GetComponentsInChildren<HingeJoint>();
for (HingeJoint joint in hingeJoints)
{
joint.useSpring = false;
}
继承的成员
继承的变量
name 对象名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectsOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
Behaviour
类,继承自Component。Behaviours是能够被启用或禁用的组件。参见MonoBehaviour和Component。
变量
◆ var enabled : bool
描述:启用Behaviours被更新,禁用Behaviours不被更新。这将在behaviour的坚实面板中显示为一个小的复选框GetComponent(PlayerScript)enabled = false;
继承的成员
继承的变量
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
Animation
类,继承自Behaviour,可枚举。动画组件用来播放动画。你能够给动画组件赋予一个动画剪辑,并从脚本中控制它的播放。Unity中的动画系统是基于权值的,而且支持动画混合、附加动画、动画合成、层和全部动画播放方面的彻底控制。
为了播放动画可以使用Animation.Play。
为了在动画间渐变可以使用Animation.CrossFade。
为了改变更画的层可以使用AnimationState.layer。
为了改变更画的包裹模式(循环、单次、往返)可以使用Animation.wrapMode或
AnimationState.wrapMode。
AnimationState能够被用来调整播放速度和直接控制混合语合成。
Animation也支持枚举,所以你能够像这样循环全部的AnimationStates。
//使该角色上全部动画半速播放
for (var state : AnimationState in animation)
{
state.speed = 0.5;
}
变量
◆ var animateOnlyIfVisible : bool
描述:启用后,Unity会在认为动画不可见的时候中止播放。该选项能够节省资源。
◆ var animatePhysics : bool
描述:启用后,动画奖在物理循环中执行。这只在与运动学刚体结合时有用。一个动画平台能够应用速度和摩擦到其顶部的刚体。为了利用这个,animatePhysics必须被启用,而且动画物体必须为一个运动学刚体。
◆ var clip : AnimationClip
描述:默认动画。
animation.Play(animation.clip);
//等待动画完成
yield WaitForSeconds (animation.clip.length);
◆ var isPlaying : bool
描述:是否正在播放动画?
//在动画没有播放时播放这个动画。
function OnMouseEnter()
{
if (!animation.isPlaying)animation.Play();
}
◆ var playAutomatically : bool
描述:默认的动画剪辑(Animation.clip)是否在开始时自动播放?
animation.playAutomatically = true;
◆ var this[name : string] : AnimationState
描述:返回名为name的动画状态。
//获取walk动画状态并设置它的速度
animation["walk"].speed = 2.0;
//获取run动画状态并设置它的速度
animation["run"].weight = 0.5;
◆ var wrapMode : WrapMode
描述:超出剪辑播放时间以外时如何处理?
WrapMode.Default:从剪辑中获取回绕模式(默认为Once)。
WrapMode.Once:当时间到达末尾时中止动画。
WrapMode.Loop:当时间到达末尾时从头开始播放。
WrapMode.PingPong:在开始和结束之间来回播放。
WrapMode.ClampForever:播放动画。当它到达末端时,它将保持在最后一帧。
//让动画循环
animation.wrapMode = WrapMode.Loop;
函数
◆ function AddClip (clip : AnimationClip, newName : string) : void
描述:添加一个clip到Animation,它的名称为newName。
var walkClip : AnimationClip;
animation.AddClip(walkClip, "walk");
◆ function AddClip (clip : AnimationClip, newName : string, firstFrame : int, lastFrame : int, addLoopFrame : bool = false) : void
描述:添加clip只在firstFrame和lastFrame之间播放。这个新的剪辑也将被使用名称newName并添加到Animation。addLoopFrame:是否要插入额外的帧一边匹配第一帧?若是制做循环动画就要打开这个。若是存在一个同名的剪辑,老的将被覆盖。
//分割默认的剪辑为shoot,walk和idle动画
animation.AddClip(animation.clip, "shoot", 0, 10);
//walk和idle将在末尾添加额外的循环真
animation.AddClip(animation.clip, "walk", 11, 20, true);
animation.AddClip(animation.clip, "idle", 21, 30, true);
◆ function Blend (animation : string, targetWeight : float = 1.0F, fadeLength : float = 0.3F) : void
描述:在接下来的time内混合名为animation的动画获得targetWeight。其余动画播放不会受影响。
◆ function CrossFade (animation : string, fadeLength : float = 0.3F, mode : PlayMode = PlayMode.StopSameLayer) : void
描述:淡入名为animation的动画,并在time内淡出其余动画。若是模式是PlayMode.StopSameLayer,在同一层上淡入的动画将会被淡出。若是模式是PlayMode.StopAll,当动画被淡入后,全部动画都会被淡出。若是动画被设置为循环,在播放后将中止并回放。
//淡入walk循环并淡出同一层上全部其余动画。
//0.2秒内完成淡入
animation.CrossFade("Walk", 0.2);
//当玩家想要移动的时候,使角色动画在Run和Idle动画之间渐变。
function Update ()
{
if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1)
animation.CrossFade("Run");
else
animation.CrossFade("Idle");
}
◆ function CrossFadeQueued (animation : string, fadeLength : float = 0.3F, queue : QueueMode = QueueMode.CompleteOthers, mode : PlayMode = PlayMode.StopSameLayer) : AnimationState
描述:在前一动画播放完后渐变到下一个动画。例如你能够播放一个特定的动画序列。动画在播放前复制自身,所以你能够再相同的动画间渐变,这可用来重叠两个相
同的动画。例如你可能有一个挥剑的动画,玩家快速挥动了2次,你能够回放这个动画并从开始播放它,但会跳帧。
下面是可用的queue modes:
下面是可用的queue modes:
若是queue为QueueMode.CompleteOthers这个动画纸在全部其余动画都中止播放时才开始。
若是queue为QueueMode.PlayNow这个动画将以一个复制的动画状态当即开始播放。
动画播放完成后它将自动清除它本身。在它播放完成后使用赋值的动画将致使一个异常。
function Update ()
{
if (Input.GetButtonDown("Fire1"))
animation.CrossFadeQueued("shoot", 0.3, QueueMode.PlayNow);
}
◆ function GetClipCount () : int
描述:获取当前animation的剪辑数。
◆ function IsPlaying (name : string) : bool
描述:名为name的动画是否在播放?
function OnMouseEnter()
{
if (!animation.IsPlaying("mouseOverEffect"))
animation.Play("mouseOverEffect");
}
◆ function Play (mode : PlayMode = PlayMode.StopSameLayer) : bool
function Play (animation : string, mode : PlayMode = PlayMode.StopSameLayer) : bool
描述:当即播放该动画,没有任何混合。Play()将会开始播放名为animation的动画,或者播放默认动画,且会在没有混合的状况下忽然播放。若是模式为PlayMode.StopSameLayer全部在同一层上的动画都将被中止。若是模式是PlayMode.StepAll全部当前播放的动画都将被中止。若是动画正在播放,其余动画将被中止,但该动画会回到开始位置。若是动画没有被设置为循环,播放完后将中止并回放。若是动画没法被播放(没有该剪辑或没有默认动画),Play()会返回假。
//播放默认动画
animation.Play ();
//播放walk动画,中止该层内全部其余动画
animation.Play ("walk");
//播放walk动画,中止其余全部动画
animation.Play ("walk", PlayMode.StopAll);
◆ function PlayQueued (animation : string, queue : QueueMode = QueueMode.CompleteOthers, mode : PlayMode = PlayMode.StopSameLayer) : AnimationState
描述:在前一动画播放完后渐变一个动画。例如你能够播放一个特定的动画序列。动画状态在播放前复制自身,所以你能够再相同的动画之间渐变。这可用来重叠两个相同的动画。例如你可能有一个挥剑的动画。玩家快速的砍了两次,你能够回放这个动画,而且从开始播放,只不过会跳帧。
下面是可用的queue modes:
若是queue为QueueMode.CompleteOthers这个动画纸在全部其余动画都中止播放时才开始。
若是queue为QueueMode.PlayNow这个动画将以一个复制的动画状态当即开始播放。
动画播放完成后它将自动清除它本身。在它播放完成后使用赋值的动画将致使一个异常。
function Update ()
{
if (Input.GetButtonDown("Fire1"))
animation.PlayQueued("shoot", QueueMode.PlayNow);
}
◆ function RemoveClip (clip : AnimationClip) : void
描述:从动画列表中移除剪辑。这将移除该剪辑及全部棘突它的动画状态。
◆ function RemoveClip (clipName : string) : void
描述:从动画列表中移除剪辑。这将移除指定名称的动画状态。
◆ function Rewind (name : string) : void
描述:回退名为name的动画。
//回退walk动画到开始
animation.Rewind("walk");
◆ function Rewind () : void
描述:回退全部动画。
//回退全部动画到开始
animation.Rewind();
◆ function Sample () : void
描述:在当前状态采样动画。若是想要设置一些动画状态,并采样一次,能够用这个。
//设置一些状态
animation["MyClip"].time = 2.0;
animation["MyClip"].enabled = true;
//采样动画
animation.Sample();
animation["MyClip"].enabled = false;
◆ function Stop () : void
描述:中止全部由这个Animation开始的动画。中止一个动画并回退到开始。
//终止全部动画
animation.Stop();
◆ function Stop (name : string) : void
描述:中止名为name的动画。中止一个动画并回退到开始。
//中止walk动画
animation.Stop ("walk");
◆ function SyncLayer (layer : int) : void
描述:同步全部在该层的动画的播放速度。当混合两个循环动画时,它们一般有不一样长度。例如一个walk循环要比run更长。当混合它们时,你须要确保行走于跑循环中脚的位置相同。也就是说,动画的播放速度必须被调整一边动画同步。SyncLayer将给予它们的混合权值计算在该层上全部动画播放的平均诡异化速度,而后对该层上的动画使用播放速度。
//放置walk和run动画在同一层,并同步它们的速度
animation["walk"].layer = 1;
animation["run"].layer = 1;
animation.SyncLayer(1);
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
AudioListener
类,继承自Behaviour。标示在三维空间中的侦听器。这个类可实现麦克风同样的设备。它记录周围的声音,并经过玩家的扬声器播放。在场景中只能有一个侦听器。参见组件参考中AudioSource,AudioListener,component。
变量
◆ var velocityUpdateMode : AudioVelocityUpdateMode
描述:可以让你设置Audio Listener是否应该用固定或动态方式更新。若是你遇到了多普勒效应问题,请确保设置这个更新于Audio Listener的移动在同一循环内。若是它被附加到一个刚体,默认设置将自动设置该侦听器在固定的更新周期内更新,动态的以其余方式。
listener.velocityUpdateMode = AudioVelocityUpdateMode.Fixed;
类变量
◆ static var pause : bool
描述:音频的暂停状态。若是设置为真,该侦听器将不会产生声音。相似于设置音量为0.0
AudioListener.pause = true;
◆ static var volume : float
描述:控制游戏的音量。
AudioListener.volume = 0.5;
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
AudioSource
类,继承自Behaviour。标示三位空间中的音频源。AudioSource被附加到GameObject以便在三位环境中播放声音。单声道声音以3D播放。为了播放三位声音,也须要一个AudioListener。音频侦听器一般附加在使用的相机上。立体声老是不以距离为基础衰减。你可使用Play,Pause,Stop来播放音频剪辑。也能够再播放时使用volume属性调整音量,或者使用time来定位。多个声音可使用PlayOneShot在一个AudioSource上播放。可使用PlayClipAtPoint在三位空间中的一个静态位置播放剪辑。参见AudioListener,AudioClip,AudioSource component。
变量
◆ var clip : AudioClip
描述:默认播放的AudioClip。
var otherClip: AudioClip;
// 播放默认声音
audio.Play();
// 等待音频结束
yield WaitForSeconds (audio.clip.length);
// 指定其余音频并播放
audio.clip = otherClip;
audio.Play();
◆ var ignoreListenerVolume : bool
描述:这使音频源不考虑音频侦听器的音量。播放背景音乐时可启用这个。当播放背景音乐时,你但愿音乐不受普通音量设置的影响,可使用该变量。
audio.ignoreListenerVolume = true;
◆ var isPlaying : bool
描述:clip如今生意否在播放?
//当音频组件中止播放时,播放otherClip
var otherClip : AudioClip;
function Update ()
{
if (!audio.isPlaying)
{
audio.clip = otherClip;
audio.Play();
}
}
◆ var loop : bool
描述:音频剪辑是否循环?若是你在一个正在播放的AudioSource上禁用循环,声音将在当前循环结束后中止。
// 中止声音循环
audio.loop = false;
◆ var maxVolume : float
描述:音频剪辑播放时的最大音量。不论你距离多近,声音不会比这个值更大。
audio.maxVolume = 0.5;
参见:minVolume, rolloffFactor.
◆ var minVolume : float
描述:音频剪辑播放时的最小音量。不论你距离多远,声音不会比这个还小。
audio.minVolume = 0.5;
参见:maxVolume, rolloffFactor.
◆ var pitch : float
描述:音频源的音调。
audio.pitch = 1.0;
◆ var playOnAwake : bool
描述:若是设置为真,音频源江在awake时自动播放。
if(! audio.playOnAwake)
{
audio.Play();// 若是没有设置为Awake时播放,那么播放该剪辑
}
◆ var rolloffFactor : float
描述:设置声音衰减的速度。该值越大,侦听器必须更接近才能听到声音。
audio.rolloffFactor = 0.1;
参见:minVolume, maxVolume.
◆ var time : float
描述:以秒计算的播放位置。使用这个来读当前播放时间或寻找新的播放时间。
◆ var velocityUpdateMode : AudioVelocityUpdateMode
描述:Audio Source是否应该以固定或动态的方式更新?若是你遇到了这个源的多普勒效应问题,请确保设置这个更新与Audio Source的移动
在同一循环内。若是它被附加到一个刚体,默认设置将自动设置该源在固定的更新周期内更新,以动态的以及其余方式。
◆ var volume : float
描述:音频源的音量。
audio.volume = 0.2;
函数
◆ function Pause () : void
描述:暂停播放clip。
audio.Pause();
参见:Play,Stop函数
◆ function Play () : void
描述:播放clip。
audio.Play();
参见:Pause,Stop函数
◆ function PlayOneShot (clip : AudioClip, volumeScale : float = 1.0F) : void
描述:播放一个AudioClip。
//与其余物体碰撞时播放impact音频剪辑
var impact : AudioClip;
function OnCollisionEnter ()
{
audio.PlayOneShot(impact);
}
◆ function Stop () : void
描述:中止播放clip。
audio.Stop();
参见:Play,Pause函数
类方法
◆ static function PlayClipAtPoint (clip : AudioClip, position : Vector3, volume : float = 1.0F) : void
描述:在制定位置上播放剪辑。播放完成后自动消除音频源。正在播放的声音的音频源被返回。
//在制定位置播放clip
var clip : AudioClip;
AudioSource.PlayClipAtPoint(clip, Vector3 (5, 1, 2));
若是想进一步控制播放,可使用下面代码。
var theClip : AudioClip;
PlayAudioClip(theClip, transform.position, 1);
function PlayAudioClip (clip : AudioClip, position : Vector3, volume : float)
{
var go = new GameObject ("One shot audio");
go.transform.position = position;
var source : AudioSource = go.AddComponent (AudioSource);
source.clip = clip;
source.volume = volume;
source.Play ();
Destroy (go, clip.length);
return source;
}
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
Camera
类,继承自Behaviour。Camera是一个设备,玩家经过它来看世界。屏幕空间点用像素定义。屏幕左下为(0,0);右上是(pixelWidth.pixelHeight)。z的位置是以世界单位衡量到相机的距离。视口空间点是归一化的而且是相对于相机的。相机左下为(0,0);右上是(1,1)。z的位置是以世界单位衡量到相机的距离。世界空间点是以全局坐标定义的(例如Transform.position)。
参见:camera component
变量
◆ var aspect : float
描述:长宽比(宽度除以高度)。默认的长宽比是从屏幕的长宽比计算获得的,即便相机没有被渲染到全屏。若是修改了相机的aspect比,这个值将保持到你调用camera.ResetAspect();这将充值猖狂比为屏幕的长宽比。
if(camera.aspect > 1.0)
print ("Screen is more wide than tall!");
else
print ("Screen is more tall than wide!");
参见:camera component,Screen类。
◆ var backgroundColor : Color
描述:屏幕将被清理未这个颜色。只能在clearFlags被设置为CameraClearFlags.SolidColor(或设置为CameraClearFlags.Skybox但没有设置天空盒)时使用。
//来回变化背景色
var color1 = Color.red;
var color2 = Color.blue;
var duration = 3.0;
//设置清楚标记为该颜色
camera.clearFlags = CameraClearFlags.SolidColor;
function Update ()
{
var t = Mathf.PingPong (Time.time, duration) / duration;
camera.backgroundColor = Color.Lerp (color1, color2, t);
}
参见:camera component,Camera.clearFlags属性。
◆ var cameraToWorldMatrix : Matrix4x4
描述:从相机空间到世界空间的变换矩阵(只读)。使用次变量计算相机空间中的一个点在世界坐标中的什么位置。注意相机空间与openGL的约定相同。相机前味z轴负方向。这不一样于Unity的约定,向前微z轴争相。
//以distance单位,沿着相机所看到的方向,在屏幕中绘制一个黄色的球,
var distance = -1.0;
function OnDrawGizmosSelected ()
{
var m = camera.cameraToWorldMatrix;
var p = m.MultiplyPoint (Vector3(0,0,distance));
Gizmos.color = Color.yellow;
Gizmos.DrawSphere (p, 0.2);
}
◆ var clearFlags : CameraClearFlags
描述:相机如何清楚背景。能够是CameraClearFlags.Skybox,CameraClearFlags.SolidColor,CameraClearFlags.Depth,CameraClearFlags.Nothing。
//用背景色清除(忽略天空盒)
camera.clearFlags = CameraClearFlags.SolidColor;
◆ var cullingMask : int
描述:这个用来选择性的渲染部分场景。若是GameObject的layerMask与相机的cullingMask进行AND操做后为0,则这个游戏物体对于该相机是不可见的。参考Layers获取更多信息。
//只渲染在第一层中的物体(默认层)
camera.cullingMask = 1 << 0;
参见:camera component
◆ var depth : float
描述:相机在渲染顺序上的深度。具备较低深度的相机将在较高深度的相机以前渲染。若是有多个相机并其中一些不须要覆盖整个屏幕,可使用这个来控制相机的绘制次序。
//设置该相机在主相机以后渲染
camera.depth = Camera.main.depth + 1;
参见:camera component,Camera.rect属性
◆ var farClipPlane : float
描述:远裁剪面的距离。
camera.farClipPlane = 100.0;
参见:camera component
◆ var fieldOfView : float
描述:相机的视野,以度为党委。这是垂直视野。水平FOV取决于视口的宽高比。当相机是正交时,fieldOfView被忽略。(参考orthographic)。
//设置附加到同一个游戏物体上的相机的FOV位60
camera.fieldOfView = 60;
//设置主相机的视野为80
Camera.main.fieldOfView = 80;
参见:camera component
◆ var nearClipPlane : float
描述:近才见面的距离。
camera.nearClipPlane = 0.1;
参见:camera component
◆ var orthographic : bool
描述:相机是正交的(true)仍是透视的(false)?若是orthographic为true,相机的视野由orthographicSize定义。若是orthographic为false,相机的视野由fieldOfView定义。
//设置相机为正交
camera.orthographic = true;
//设置主相机为正交
Camera.main.orthographic = true;
参见:camera component
◆ var orthographicSize : float
描述:在正交模式下相机的一半尺寸。这个为视体垂直大小的一半。相机不是正交时,水平视大小拒绝于视口的长宽比。
//设置相机的正交尺寸为5
camera.orthographic = true;
camera.orthographicSize = 5;
//设置主相机的正交尺寸为5
Camera.main.orthographic = true;
Camera.main.orthographicSize = 5;
参见:camera component
◆ var pixelHeight : float
描述:相机的像素高度(只读)。
print ("Camera is " + camera.pixelHeight + " pixels high");
◆ var pixelRect : Rect
描述:相机被渲染到屏幕像素坐标中的位置。
function Update ()
{
var r = camera.pixelRect;
print ("Camera displays from " + r.xMin + " to " + r.xMax + " pixel");
}
◆ var pixelWidth : float
描述。相机的像素宽度(只读)。
print ("Camera is " + camera.pixelWidth + " pixels wide");
◆ var projectionMatrix : Matrix4x4
描述:设置自动以的投影矩阵。若是你改变该矩阵,相机的渲染将再也不给予它的fieldOfView更新,直到调用到ResetProjectionMatrix。只有当真正须要一个非标准的投影时,才使用自定义投影。该属性被Unity的水渲染使用来设置一个oblique.projection矩阵。使用自定义投影须要了解变换和投影矩阵。
//让相机以有节奏的方式晃动
var originalProjection : Matrix4x4;
originalProjection = camera.projectionMatrix;
function Update ()
{
var p = originalProjection;
//改变原始矩阵的某些值
p.m01 += Mathf.Sin (Time.time * 1.2) * 0.1;
p.m10 += Mathf.Sin (Time.time * 1.5) * 0.1;
camera.projectionMatrix = p;
}
//设置一个变异中心的投影,这里透视的消失点没有必要在屏幕的中心。left/right/top/bottom定义近裁剪面大小。例如相机的近裁剪面偏移中心的距离,改变该值就能够看到相机视图的变化。
@script ExecuteInEditMode
var left = -0.2;
var right = 0.2;
var top = 0.2;
var bottom = -0.2;
function LateUpdate ()
{
var cam = camera;
var m = PerspectiveOffCenter(left, right, bottom, top,cam.nearClipPlane, cam.farClipPlane );
cam.projectionMatrix = m;
}
static function PerspectiveOffCenter(left : float, right : float,bottom : float, top : float,near : float, far : float ) : Matrix4x4{
var x = (2.0 * near) / (right - left);
var y = (2.0 * near) / (top - bottom);
var a = (right + left) / (right - left);
var b = (top + bottom) / (top - bottom);
var c = -(far + near) / (far - near);
var d = -(2.0 * far * near) / (far - near);
var e = -1.0;
var m : Matrix4x4;
m[0,0] = x; m[0,1] = 0; m[0,2] = a;
m[0,3] = 0;
m[1,0] = 0; m[1,1] = y; m[1,2] = b; m[1,3] = 0;
m[2,0] = 0;
m[2,1] = 0; m[2,2] = c; m[2,3] = d;
m[3,0] = 0; m[3,1] = 0; m[3,2] = e;
m[3,3] = 0;
return m;
}
◆ var rect : Rect
描述:相机被渲染到屏幕归一化坐标中的位置。rect的范围从0(左/下)到1(右/上)。
//每次按下空格键时改变视口宽度
function Update ()
{
if (Input.GetButtonDown ("Jump"))
{
//随机选择边缘
var margin = Random.Range (0.0, 0.3);
//设置矩形
camera.rect = Rect (margin, 0, 1 - margin * 2, 1);
}
}
◆ var targetTexture : RenderTexture
描述:目标渲染纹理(只限UnityPro)。
◆ var velocity : Vector3
描述:获取世界空间中相机的速度(只读)这是相机在上一帧以秒为单位的运动。
function Update ()
{
print ("Camera moving at " + camera.velocity.magnitude + " m/s");
}
◆ var worldToCameraMatrix : Matrix4x4
描述:从世界到相机空间的变换矩阵。用这个计算物体的相机空间位置或提供自定义相机的位置。这个位置不是基于变化的。注意相机空间与openGL的约定相同:相机的前面为Z轴负方向。这不一样于Unity的约定,向前微Z轴争相。若是你改变该矩阵,相机的渲染将再也不基于它的Transform更新。知道调用ResetWorldToCameraMatrix。
//从offset位置偏移相机的渲染
var offset = Vector3 (0,1,0);
function LateUpdate ()
{
//构建一个沿着Z轴偏移与镜像的矩阵。由于相机已经为Z轴镜像,并用于其他部分
var camoffset = Vector3 (-offset.x, -offset.y, offset.z);
var m = Matrix4x4.TRS (camoffset, Quaternion.identity, Vector3 (1,1,-1));
//重载worldToCameraMatrix为偏移镜像变换矩阵
camera.worldToCameraMatrix = m * transform.worldToLocalMatrix;
}
函数
◆ function CopyFrom (other : Camera) : void
描述:使该相机的设置于其余相机相同。这将从er相机拷贝到全部相机变量(视野,清楚标记,裁剪蒙版)。这也将使相机的变换与other相机相同,相机的层也与other相机相同。在作自定义渲染效果的时候,这能够用来设置一台具备与其余相机设置彻底相同的相机。例如在使用RenderWithShader时。
◆ function Render : void
描述:手动渲染相机。这个将使用相机的清除标记,目标纹理和全部其余设置。相机将发送OnPreCull,OnPreRender和OnPostRender到任何附加的脚本上,并渲染任何最后的图像滤镜。这个用来精确的控制渲染次序,为了使用这个特性,建立一个相机并禁用它。而后在它上面调用Render。参见:RenderWithShader。
◆ function RenderToCubemap (cubemap : Cubemap, faceMask : int = 63) : bool
描述:从这个相机渲染到一个立方贴图。这个是很是有用的。能够再编辑器中烘焙场景的静态立方贴图。参考下面的想到实例。相机的位置,清除标志和裁剪面距离将被使用来渲染到立方贴图表面。faceMask是一个比特域,标示哪一个立方贴图面应该被渲染。每一个位对应于一个面。比特数是CubemapFace枚举的整型值。默认的全部六个立方贴图面都将被渲染(默认值63最低的6位是打开的)。若是渲染失败,这个函数将返回false。某些显卡不支持这个函数。参见:Cubemap assets,Reflective shaders。
//从给定的点渲染场景到以静态立方贴图放置这个脚本到工程的Editor文件夹中,而后用一个Reflectiveshader来使用立方贴图
class RenderCubemapWizard extends ScriptableWizard
{
var renderFromPosition : Transform;
var cubemap : Cubemap;
function OnWizardUpdate ()
{
helpString = "Select transform to render from and cubemap to render into";
isValid = (renderFromPosition != null) && (cubemap != null);
}
function OnWizardCreate ()
{
//为渲染建立临时相机
var go = new GameObject( "CubemapCamera", Camera );//放置到物体上
go.transform.position = renderFromPosition.position;
go.transform.rotation = Quaternion.identity;
//渲染到立方贴图
go.camera.RenderToCubemap( cubemap );
//销毁临时相机
DestroyImmediate( go );
}
@MenuItem("GameObject/Render into Cubemap")
static function RenderCubemap ()
{
ScriptableWizard.DisplayWizard(
"Render cubemap", RenderCubemapWizard, "Render!");
}
}
◆ function RenderToCubemap (cubemap : RenderTexture, faceMask : int = 63) : bool
描述:从这个相机渲染到一个立方贴图。用于实时反射到立方贴图渲染纹理,也是很是耗时的,尤为是全部六个立方贴图面在每一帧中都被渲染。相机的位置,清楚标志和裁剪面距离将被使用来渲染到立方贴图表面。faceMask是一
个比特域,标示哪一个立方贴图面应该被渲染。每一个位对应于一个面。比特数是CubemapFace枚举的整型值。默认的全部六个正方贴图面都将被渲染(默认值63的最低6位是打开的)。若是渲染失败该函数会返回false。某些显卡不支持该函数。参加:RenderTexture.isCubemap, Reflective shaders。
//将该脚本附加到使用了Reflective shader的物体上实时反射立方贴图
script ExecuteInEditMode
var cubemapSize = 128;
var oneFacePerFrame = false;
private var cam : Camera;
private var rtex : RenderTexture;
function Start ()
{
//启动时渲染全部6个面
UpdateCubemap( 63 );
}
function LateUpdate ()
{
if (oneFacePerFrame)
{
var faceToRender = Time.frameCount % 6;
var faceMask = 1 << faceToRender;
UpdateCubemap (faceMask);
}
else
{
UpdateCubemap (63); //全部6个面
}
}
function UpdateCubemap (faceMask : int)
{
if (!cam)
{
var go = new GameObject ("CubemapCamera", Camera);
go.hideFlags = HideFlags.HideAndDontSave;
go.transform.position = transform.position;
go.transform.rotation = Quaternion.identity;
cam = go.camera;
cam.farClipPlane = 100; //不渲染较远的部分
cam.enabled = false;
}
if (!rtex)
{
rtex = new RenderTexture (cubemapSize, cubemapSize, 16);
rtex.isPowerOfTwo = true;
rtex.isCubemap = true;
rtex.hideFlags = HideFlags.HideAndDontSave;
renderer.sharedMaterial.SetTexture ("_Cube", rtex);
}
cam.transform.position = transform.position;
cam.RenderToCubemap (rtex, faceMask);
}
function OnDisable ()
{
DestroyImmediate (cam);
DestroyImmediate (rtex);
}
◆ function RenderWithShader (shader : Shader, replacementTag : string) : void
描述:用shader替换渲染相机。参考Rendering with Replaced Shaders获取细节。此函数将渲染相机。这将使相机的的清除标记、目标纹理和全部其余设置。这个相机不会发送OnPreCull, OnPreRender 或者 OnPostRender到已附加的脚本上。
图像滤镜
也不会被渲染。该函数能够用于特效,例如渲染整个场景屏幕空间缓冲,热效果等。为了使用该特性,建立一个相机并禁用它。而后在它上面调用RenderWithShader。参见:Rendering with Replaced Shaders, SetReplacementShader, Render。
◆ function ResetAspect () : void
描述:返回猖狂比为屏幕的长宽比。调用这个结束aspect的效果。
camera.ResetAspect();
◆ function ResetProjectionMatrix () : void
描述:让投影反映正常的相机参数。调用这个结束projectionMatrix的效果。
camera.ResetProjectionMatrix();
◆ function ResetReplacementShader () : void
描述:从相机上移除shader替换。调用这个结束SetReplacementShader效果。
◆ function ResetWorldToCameraMatrix () : void
描述:在场景中让渲染位置反映相机位置。调用这个结束worldToCameraMatrix的效果。
camera.ResetWorldToCameraMatrix();
◆ function ScreenPointToRay (position : Vector3) : Ray
描述:返回从相机出发,穿过屏幕点的一个射线。产生的射线是在世界空间中,从相机的近裁剪面开始并穿过屏幕position(x,y)像素坐标(position.z被忽略)。屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight)。
//在屏幕视图中绘制一条线,穿过一个到屏幕左下角200像素的点
function Update ()
{
var ray = camera.ScreenPointToRay (Vector3(200,200,0));
Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);
}
◆ function ScreenToViewportPoint (position : Vector3) : Vector3
描述:从屏幕空间到视口空间变换position。屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight)。z的位置是以世界单位衡量的刀相机的距离。视口空间是归一化的并相对于相机的。相机的左下为(0,0);右上是(1,1)。z的位置是以世界单位衡量的刀相机的距离。
◆ function ScreenToWorldPoint (position : Vector3) : Vector3
描述:从屏幕空间到世界空间变换position。屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight)。z的位置是以世界单位衡量的到相机的距离。
//在所选相机的近裁剪面上绘制一个黄色的球,在离左下100像素的位置
function OnDrawGizmosSelected ()
{
var p = camera.ScreenToWorldPoint (Vector3 (100,100,camera.nearClipPlane));
Gizmos.color = Color.yellow;
Gizmos.DrawSphere (p, 0.1);
}
◆ function SetReplacementShader (shader : Shader, replacementTag : string) : void
描述:使相机用shader替换来渲染。参考Rendering with Replaced Shaders。调用该函数后,相机将使用替换的shader来渲染它的视图。调用ResetReplacementShader来重置为普通渲染。参见:Rendering with Replaced Shaders, ResetReplacementShader, RenderWithShader。
◆ function ViewportPointToRay (position : Vector3) : Ray
描述:返回从相机出发穿过视点的一个射线。产生的射线是在世界空间中,从相机的近裁剪面开始并穿过视口position(x,y)坐标(position.z被忽略)。视口坐标是归一化的并相对于相机的。相机的左下为(0,0);右上为(1,1)。
//打印相机直接看到的物体名称
function Update ()
{
//获取穿过屏幕中心的射线
var ray = camera.ViewportPointToRay (Vector3(0.5,0.5,0));
//投射
var hit : RaycastHit;
if (Physics.Raycast (ray, hit))
{
print ("I'm looking at " + hit.transform.name);
}
else
{
print ("I'm looking at nothing!");
}
}
◆ function ViewportToScreenPoint (position : Vector3) : Vector3
描述:从视口空间到屏幕空间变换position。视口空间是归一化的并相对于相机的。相机的左下为(0,0);右上为(1,1)。z的位置是以世界单位衡量的刀相机的距离。屏幕空间以像素定义。屏幕左下为(0,0;右上为(pixelWidth,pixelHeight)。z的位置是以世界单位衡量的到相机的距离。
◆ function ViewportToWorldPoint (position : Vector3) : Vector3
描述:从视口空间到屏幕空间变换position。视口空间是归一化的并相对于相机的。相机的左下为(0,0);右上为(1,1)。z的位置是以世界单位衡量的刀相机的距离。屏幕空间以像素定义。屏幕左下为(0,0;右上为(pixelWidth,pixelHeight)。z的位置是以世界单位衡量的到相机的距离。
//在进裁剪面的右上角,针对在场景视图中选中的相机绘制一个黄色的球
function OnDrawGizmosSelected ()
{
var p = camera.ViewportToWorldPoint (Vector3 (1,1, camera.nearClipPlane));
Gizmos.color = Color.yellow;
Gizmos.DrawSphere (p, 0.1);
}
◆ function WorldToScreenPoint (position : Vector3) : Vector3
描述:从世界空间到屏幕空间变换position。屏幕空间以像素定义。屏幕的左下为(0,0;右上为(pixelWidth,pixelHeight)。z的位置是
以世界单位衡量的刀相机的距离。
var target : Transform;
function Update ()
{
var screenPos = camera.WorldToScreenPoint (target.position);
print ("target is " + screenPos.x + " pixels from the left");
}
◆ function WorldToViewportPoint (position : Vector3) : Vector3
描述:从世界空间到视口空间变换position。视口空间是归一化的并相对于相机的。相机的左下为(0,0);右上为(1,1)。z的位置是以世界单位衡量的到相机的距离。
//找出target在屏幕的左边仍是右边
var target : Transform;
function Update ()
{
var viewPos = camera.WorldToViewportPoint (target.position);
//视口坐标范围从0到1
if( viewPos.x > 0.5 )
print ("target is on the right side!");
else
print ("target is on the left side!");
}
消息传递
◆ function OnPostRender () : void
描述:OnPostRender在相机渲染场景以后调用。这个消息被发送到全部附加在相机上的脚本。
◆ function OnPreCull () : void
描述:OnPreCull在相机开始裁剪场景以前调用。OnPreCull仅仅在这个过程之间被调用。这个消息被发送到全部附加在相机上的脚本。若是你想改变相机的视觉参数(例如,fieldOfView或者仅仅是变换),就在这里作这个。场景物体的可见性将给予相机的参数在OnPreCull以后肯定。
◆ function OnPreRender () : void
描述:OnPreCull在相机开始渲染场景以前调用。这个消息被发送到全部附加在相机上的脚本。注意若是你在这里改变了相机的视野参数(例如fieldOfView),它们将只影响下一帧。用OnPreCull代替。
◆ function OnRenderImage (source : RenderTexture, destination : RenderTexture) : void
描述:OnRenderImage在全部渲染完成后被调用,来渲染图片的后记处理效果(仅限UnityPro)。该函数容许使用给予shader的过滤器来处理最后的图片。进入的图片是source渲染纹理。结果是destination渲染纹理。当多个图片过滤器附加在相机上时,它们序列化的处理图片,将第一个过滤器的目标做为下一个过滤器的源。
该消息被发送到全部附加在相机上的脚本。参见:UnityPro中的image effects。
◆ function OnRenderObject (queueIndex : int) : void
描述:该函数被用来渲染你本身的物体,使用Graphics.DrawMeshNow或者其余函数。queueIndex指定用来渲染物体的render queue。可使用RenderBeforeQueues属性来指定你想绘制这个物体到哪一个渲染队列。
◆ function OnWillRenderObject () : void
描述:若是物体可见,每一个相机都会调用OnWillRenderObject。该函数在裁剪过程当中被调用。可用该函数建立具备依赖性的渲染纹理。只有在被渲染的物体可见时,才更新该渲染纹理。例如,水组件就使用了这个。Camera.current将被设置为要渲染这个物体的相机。
类变量
◆ static var allCameras : Camera[]
描述:返回场景中全部启用的相机。
var count = Camera.allCameras.length;
print ("We've got " + count + " cameras");
◆ static var current : Camera
描述:当前用于渲染的相机,只用于低级的渲染控制(只读)。多数时候你会使用Camera.main。只有在执行下面时间的时候使用该函数:MonoBehaviour.OnRenderImage, MonoBehaviour.OnPreRender, MonoBehaviour.OnPostRender。
◆ static var main : Camera
描述:第一个启用的被标记为“MainCamera”的相机(只读)。若是场景中没有这个相机返回null。
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
ConstantForce
类,继承自Behaviour。一个不间断的力。这是一个小的物理工具类,用来将一个连续的力应用到一个物体上。Rigidbody.AddForce只在一帧中应用力道Rigidbody,所以你不得不持续调用这个函数。
领以方面ConstantForce将在每一帧中应用这个力,知道改变这个力或例举为一个新的值。参见Rigidbody。
变量
◆ var force : Vector3
描述:这个力在每帧中应用到刚体。
//在世界坐标系中向上移动刚体。
constantForce.force = Vector3.up * 10;
◆ var relativeForce : Vector3
描述:力-相对于刚体坐标系统-在每帧中应用。
//向前移动刚体。
constantForce.relativeForce = Vector3.forward * 10;
◆ var relativeTorque : Vector3
描述:力矩-相对于刚体坐标系统-在每帧中应用。
//绕着其X轴旋转该物体。
constantForce.relativeTorque = Vector3.right * 2;
◆ var torque : Vector3
描述:这个力矩在每帧中应用到刚体。
//绕着世界的Y轴旋转该物体。
constantForce.torque = Vector3.up * 2;
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
GUIElement
类,继承自Behaviour。用于显示在GUI上的图片和文本字符串的基类。这个类处理全部GUI元素的基本功能。
函数
◆ function GetScreenRect (camera : Camera = null) : Rect
描述:在屏幕坐标返回GUIElement的包围矩阵。若是没有camera被指定,一个填充整个游戏窗口的相机将被使用。
function Start ()
{
var r = guiTexture.GetScreenRect ();
print ("This gui element is %d pixel wide.",r.width);
var r = guiText.GetScreenRect();
print ("This gui element is %d pixel wide.",r.width);
}
◆ function HitTest (screenPosition : Vector3, camera : Camera = null) : bool
描述:屏幕上的点在是否在元素内部?若是screenPositon包含在这个GUIElement内部时返回真,screenPosition以屏幕坐标指定,例如由Input.mousePosition属性返回的值。若是没有camera被指定,一个填充整个游戏窗口的相机将被使用。注意,若是位置在元素内部,true将被返回。即便游戏物体属于Ignore Raycast层(一般鼠标事件不会发送到Ignore Raycast物体)。参见GUILayer.HitTest。
if (guiTexture.HitTest (Vector3 (360, 450, 0.)))
print ("This gui texture covers pixel 360, 450");
if (guiText.HitTest (Vector3(360, 450, 0.)))
print ("This gui texture covers pixel 360, 450");
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
GUIText类,继承自GUIElement。显示在一个GUI中的文本字符。
变量
◆ var alignment : TextAlignment
描述:文本的对齐。
guiText.alignment = TextAlignment.Left;
◆ var anchor : TextAnchor
描述:文本的锚点。
guiText.anchor = TextAnchor.MiddleCenter;
◆ var font : Font
描述:用于文本的字体。
var font : Font;
guiText.font = font;
◆ var lineSpaceing : float
描述:行间距倍数。这个可使被定义在字体中行间距增长。
//双倍行间距
guiText.lineSpacing = 2.0;
◆ var material : Material
描述:用于渲染的Material。赋予一个新的材质来改变渲染处理。改变这个材质来改变渲染的字体。若是赋值null到material,将使用内置基本字体。
//改变这个材质显示绿色文本。
guiText.material.color = Color.green;
参见:font variable
◆ var pixelOffset : Vector2
描述:文本的像素偏移。文本从它的原始位置偏移的量。
guiText.pixelOffset = Vector2 (10, 10);
◆ var tabSize : float
描述:这个标签增长的宽度。
guiText.tabSize = 4.0;
◆ var text : string
描述:须要显示的文本。
GUITexture类,继承自GUIElement。用于2D GUI的纹理图片。
变量
◆ var color : Color
描述:GUI纹理的颜色。
//改变纹理的颜色为绿色
guiTexture.color = Color.green;
◆ var pixelInset : Rect
描述:pixellnset用来调整尺寸和位置。为了使GUI纹理老是原始大小,设置transform.localScale为Vector3.zero。
transform.position = Vector3.zero;
transform.localScale = Vector3.zero;
guiTexture.pixelInset = Rect (50, 50, 100, 100);
◆ var texture : Texture
描述:用于绘制的纹理。
//将someTexture赋值给guiTexture。
var someTexture : Texture2D;
guiTexture.texture = someTexture;
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
GUILayer类,继承自Behaviour。
函数
◆ function HitTest (screenPosition : Vector3) : GUIElement
描述:在屏幕的制定位置获取GUI元素。返回屏幕上指定点的GUIElement。若是screenPosition在某个GUIElement内部,那个元素将被返回。若是这个位置没有在任何GUI元素内部,返回null。输入Ignore Raycast层的GUI元素将被忽略,就像它们不存在。screenPosition在屏幕坐标系下,就像由Input.mousePosition属性返回的值。参见:GUIElement.HitTest,Input.mousePositon。
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回全部类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不一样。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
LensFlare
类,继承自Behaviour。用于Lensflare组件的借口。这容许你在运行时改变镜头闪光的亮度和颜色。
变量
◆ var brightness : float
描述:闪光的强度。这个控制发光元素的尺寸和亮度。
参见:Lens flare component, flare assets。
◆ var color : Color
描述:闪光的颜色。这控制闪光元素的颜色(那些启用了use light color的)。
参见:Lens flare component, flare assets。
◆ var flare : Flare
描述:使用的flare asset。
参见:Lens flare component, flare assets。
继承的成员
继承的变量
enable 启用则Behaviour被更新,不启用则不更新
transform 附加到该GameObject的Transform(没有返回null)
rigidbody 附加到该GameObject的Rigidbody(没有返回null)
camera 附加到该GameObject的Camera(没有返回null)
light 附加到该GameObject的Light(没有返回null)
animation 附加到该GameObject的Animation(没有返回null)
constantForce 附加到该GameObject的ConstantForce(没有返回null)
renderer 附加到该GameObject的Renderer(没有返回null)
audio 附加到该GameObject的Audio(没有返回null)
guiText 附加到该GameObject的GuiText(没有返回null)
networkView 附加到该GameObject的NetworkView(没有返回null)
guiTexture 附加到该GameObject的GuiTexture(没有返回null)
collider 附加到该GameObject的Collider(没有返回null)
hingeJoint 附加到该GameObject的HingeJoint(没有返回null)
particleEmitter 附加到该GameObject的ParticleEmitter(没有返回null)
gameObject 该组件所附加的游戏物体。组件老是会附加到游戏物体上
tag 该游戏物体的标签。
name 对象的名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetComponent 若是游戏附体上附加了一个,则返回type类组件,没有则返回null
GetComponentInChildren 若是该组件位于GameObject或任何其子物体上,返回type类组件,使用深度优先搜索
GetComponentsInChildren 若是这些组件位于GameObject或任何它的子物体上,返回type类组件。
GetComponents 返回GameObject上全部type类的组件
CompareTag 该游戏物体被是否被标签为tag?
SendMessageUpwards 在该游戏物体的每一个MonoBehaviour和该行为的父对象上调用名为methodName的方法
SendMessage 在该游戏物体的每一个MonoBehaviour上调用methodName方法
BroadcastMessage 在这个游戏物体或其任何子物体上的每一个MonoBehaviour上调用methodName
GetInstanceID 返回该物体的实例id
继承的类函数 operator bool 这个物体存在吗?Instantiate 克隆original物体并返回这个克隆。Destroy 移除一个游戏物体、组件或资源。DestroyImmediate 当即销毁物体obj。强烈建议使用Destroy代理。FindObjectsOfType 返回全部类型为type的激活物体。FindObjectOfType 返回第一个类型为type的激活物体。operator== 比较两个物体是否相同。operator!= 比较两个物体是否不一样。DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。