Unity3D脚本学习——运行时类
AssetBundle
类,继承自Object。AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们。AssetBundles通过BuildPipeline.BuildAssetBundle创建。
参见:WWW.assetBundle ,Loading Resources at Runtime ,BuildPipeline.BuildPlayer
function Start () {
var www = new WWW ("http://myserver/myBundle.unity3d");
yield www;
//获取指定的主资源并实例化
Instantiate(www.assetBundle.mainAsset);
}
变量
◆ var mainAsset : Object
描述:竹资源在构建资源boundle时指定(只读)。该功能可以方便的找到bundle内的主资源。例如,你也许想将预设一个角色并包括所有纹理、材质、网格和动画文件。但是完全操纵角色的预设应该是你的mainAsset并且可以被容易的访问。
function Start () {
var www = new WWW ("http://myserver/myBundle.unity3d");
yield www;
//获取指定的主资源并实例化
Instantiate(www.assetBundle.mainAsset);
}
函数
◆ function Contains (name : string) : bool
描述:如果AssetBundle的名称中包含特定的对象则进行检索。如果包含则返回真。
◆ function Load (name : string) : Object
描述:从bundle中加载名为name的物体。
◆ function Load (name : string, type : Type) : Object
描述:从bundle中加载名为name的type类物体。
◆ function LoadAll (type : Type) : Object[ ]
描述:加载所有包含在资源bundle中且继承自type的物体。
◆ function LoadAll () : Object[ ]
描述:加载包含在资源bundle中的所有物体。
◆ function Unload (unloadAllLoadedObjects : bool) : void
描述:写在bundle中的所有资源。Unload释放bundle中所有序列化数据。当unloadAllLoaderObjects为假,bundle内的序列化数据将被写在,但是任何从这个bundle中实例化的物体都将完好。当然,你不能从这个bundle中加载更多物体。当unloadAllLoaderObjects为真,所有从该bundle中加载的物体也将被销毁。如果
场景中有游戏物体引用该资源,那么引用也会丢失。
继承的成员
继承的变量
name 对象名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 立即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回所有类型为type的激活物体。
FindObjectsOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不同。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
AudioClip
类,继承自Object。音频数据的容器。一个AudioClip以压缩或未压缩的格式存储音频文件。AudioClips被AudioSources参考或引用来播放声音。参见组件参考的AudioClip.component。
变量
◆ var isReadyToPlay : bool
描述:有没流式音频剪辑准备播放?(只读)如果AudioClip是从网站上下载的,此变量用来判断下载到的数据是否足够不间断的播放。对于不是来自web的流的AudioClips,该值总是真。
function Start (){
www=new WWW(url);
audio.clip=www.audioClip;
}
function Update (){
if(!audio.isPlaying && audio.clip.isReadyToPlay)
audio.Play();
}
◆ var length : float
描述:音频剪辑的长度,以秒计(只读)。
audio.Play();
//等待音频播放完成
yield.WaitForSeconds(audio.clip.length);
继承的成员
继承的变量
name 对象名称
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
GetInstanceID 返回该物体的实例id
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体、组件或资源。
DestroyImmediate 立即销毁物体obj。强烈建议使用Destroy代理。
FindObjectsOfType 返回所有类型为type的激活物体。
FindObjectsOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator!= 比较两个物体是否不同。
DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。
Component
类,继承自Object。音频数据的容器。所有附加到游戏物体上的对象的基类。
变量
◆ var animation : Animation
描述:附加到这个GameObject的Animation。(没有则为null)
◆ var audio : AudioSource
描述:附加到这个GameObject的AudioSource。(没有则为null)
audio.Play()
◆ var camera : Camera
描述:附加到这个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
描述:附加到这个GameObject的rigidbody。标签可以用来标识一个游戏物体。标签在使用前必须在标签管理器中定义。
◆ 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;
}
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文件夹中,然后用一个Reflective shader来使用立方贴图
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 加载新场景时确保目标物体不被自动销毁。
Light
类,继承自Behaviour。用于light components的脚本接口。使用这个来控制Unity光源的所有方面。这个属性完全与现实在监视面板中的值相同。通常光源都是在编辑器中创建,但是有时候需要从脚本中创建。
function Start () {
//制作一个游戏物体
var lightGameObject = new GameObject ("The Light");
//添加光源组件
lightGameObject.AddComponent (Light);
//设置颜色和位置
lightGameObject.light.color = Color.blue;
//在添加光照组件后,设置位置(或任何变换组件)
lightGameObject.transform.position = Vector3 (0, 5, 0);
}
变量
◆ var attenuate : bool
描述:光源是否随着距离衰减?对于Directional光源衰减总是关闭的。
//关闭光源衰减。
light.attenuate = false;
参见:Light component
◆ var color : Color
描述:光源的颜色。为了修改光源的强度你需要改变光源颜色的亮度。光源总是增加亮度,因此一个黑色的光源与没有光源相同。光源是否随着距离衰减?对于Directional光源衰减总是关闭的。
//在2秒内使颜色变黑。
function Update () {
light.color -= Color.white / 2.0 * Time.deltaTime;
}
//在2个颜色之间来回插值光源颜色。
var duration = 1.0;
var color0 = Color.red;
var color1 = Color.blue;
function Update () {
//设置光源颜色
var t = Mathf.PingPong (Time.time, duration) / duration;
light.color = Color.Lerp (color0, color1, t);
}
参见:Light component。
◆ var cookie : Texture
描述:被盖光源投影的cookie纹理。如果cookie是一个立方体贴图,光源将变为一个点光源。注意cookie只在像素光源下显示。
//在监视面板中公开一个纹理的引用
var newCookie : Texture2D;
//赋cookie
light.cookie = newCookie;
参见:Light component
◆ var cullingMask : int
描述:这个用来选择性的照亮部分场景。如果GameObject的layerMask与光源的cullingMask进行AND操作后为0.,那么这个游戏物体不能被这个光源照亮。参考Layers获取更多信息。
//只照亮第一层中的物体(默认层)
light.cullingMask = 1 << 0;
参见:Light component
◆ var flare : Flare
描述:为这个光源使用的flare asset。
//在监视面板中公开一个闪光的引用
var newFlare : Flare;
//赋值闪光
light.flare = newFlare;
参见:Light component和flare asset。
◆ var intensity : float
描述:光源的强度被光源的颜色乘。该值可以介于0~8之间。允许你创建明亮的灯光。
//随时间改变光照强度
var duration = 1.0;
function Update() {
//余弦理论
var phi = Time.time / duration * 2 * Mathf.PI;
//获取余弦,并将范围从-1~1变为0~1
var amplitude = Mathf.Cos( phi ) * 0.5 + 0.5;
//设置光的颜色
light.intensity = amplitude;
}
◆ var range : float
描述:光源的范围。
即使光源关闭了attenuate,它还是只影响在它范围内的物体。
//在原始范围与原始范围一般处变换光照范围
var duration = 3.0;
private var originalRange : float;
originalRange = light.range;
function Update() {
var amplitude = Mathf.PingPong( Time.time, duration );
//将0..持续时间改为0.5..1范围
amplitude = amplitude / duration * 0.5 + 0.5;
//设置光照范围
light.range = originalRange * amplitude;
}
参见:Light component。
◆ var renderMode : LightRenderMode
描述:如何渲染该光源?此处可以是LightRenderMode.Auto, LightRenderMode.ForceVertex 或 LightRenderMode.ForcePixel。像素光渲染比较慢但是看起来较好,尤其是对那些没有较高面数的几何体。一些效果(例如凹凸)只会在像素光照下显示。
//使光源只以点光照模式渲染
light.renderMode = LightRenderMode.ForceVertex;
参见:Light component
◆ var shadowConstantBias : float
描述:阴影偏移常量。
参见:shadows,shadowObjectSizeBias。
◆ var shadowSizeBias : float
描述:阴影偏移常量。
参见:shadows,shadowConstantBias。
◆ var shadows : LightShadows
描述:这个光源是否投射阴影?
//设置光源为投射硬阴影
light.shadows = LightShadows.Hard;
参见:LightShadows, shadowStrength property, Renderer.castShadows, Renderer.receiveShadows
◆ var shadowStrength : float
描述:光源阴影的强度?
//使光源的阴影非常弱
light.shadowStrength = 0.3;
参见:shadows property, Renderer.castShadows, Renderer.receiveShadows。
◆ var spotAngle : float
描述:光源的投射光角度。主要用于Spot光源。改变Directional光源的cookie尺寸。对Point光源没有影响。
//在”minAngle”与”maxAngle”之间随机改变投射角度
//每’interval’秒改变一次.
var interval=0.3;
var minAngle=10;
var maxAngle=90;
private var timeLeft:float;
teimleft=interval;
light.type=LightType.Spot;
function Update()
{
timeLeft=Time.deltaTime;
if(timeLeft<0.0){
//开始改变
timeLeft=interval;
light.spotAngle=Random Range(minAngle,maxAngle);
};
}
参见:Light component
? var type:LightType
描述:光源的类型
可以是LightType.Spot,LightType.Directional,LightType.Point.
//制作一个投射光源
Light.type=LightType.Spot;
参见:Light component
继承的成员
继承的变量
Enabled 启用Behaviours被更新,禁用Behaviours不被更新。
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)。
guiText 附加到这个GameObject的GUIText(如果没有为null)。
networkView附加到这个GameObject的NetworkView(如果没有为null)。
Collider 附加到这个GameObject的Collider(如果没有为null)。
hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
particleEmitter 附加到这个GameObject的ParticleEmitter(如果没有为null)。
gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
Tag 这个游戏的标签。
Name 对象的名称。
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
继承的函数
GetComponet返回type类型的组件,如果游戏物体上附加一个,如果没有返
回null。
GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
GetComponets返回Gameobject所有type类型的组件。
CompareTag 这游戏物体被标签为tag?
SendMessageUpwards 在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
methodName方法。
BoradcastMessage 在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
GetInstanceID 返回该物体的实例id。
继承的类函数
Operator bool 这个物体存在吗?
Instatiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
FindObjectsOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
MonoBehaviour
类,继承自Behaviour
MonoBehaviour是每个脚本所继承的基类。
每个使用Javascript的脚本自动地从MonoBehaviour继承。当使用C#或Boo时你必须显式从MonoBehaviour继承。
参见:手册中的chapter on scripting.
函数
◆function Cancellnvoke():void
描述:取消所有在这个MonoBehaviour上调用
//在2秒时开始
//一个projectile所在每0.3秒时运行
var projectile:Rigidbody;
InvokeRepeating(“LaunchProjectile”,2,0.3);
//当用户按下ctrl按钮时,
//取消重复调用
Function Update()
{
If(Input.GetButton(“Fire1”)){
Cancellnvoke();
}
}
Function LaunchProjectile(){
Instance=Instantiate(prtfab);
Instance.velocity=Random.insideUnitSphere*5;
}
◆function Cancellvoke(methodName:string):void
描述:撤销该行为中名为methodName的所有调用。
//在2秒时开始
//一个projectile将在每0.3秒时运行
var projectile :Rigidbady;
invokeRepeating(“LaunchProjectile”,2,0.3);
//当用户按下crtl按钮时
//取消重复调用
Function Update(){
If(Input.GetButton(Fire1)){
Cancellnvode(“LaunchProjectile”);
}
}
Function LanuchProjectile(){
instance=Instntiate(prefab);
instance.velocity=Random.insideUnitSphere*5;
}
◆function Invoke(methodName:string,time:float):void
描述:在time秒调用methodName方法。
//在两秒时发射一个投射物
var Projectile:rigidbady;
Invoke(“LaunchProjectile”,2);
Function LaunchProjectile(){
Instance=Instantiate(prefab);
Instance.velocity=Random.insideUnitSphere*5;
}
◆function InvokeRepeating(methodName:string,time:float,repeatRate:float):void
描述:在time秒调用methodName方法。
第一次调用之后,每repeatRate秒重复调用这个函数
//在2秒时开始
//一个Projectile将在每0.3秒运行
var projectile:Rigidbody;
InvokeRepeating(“LaunchProjectile”,2,0.3);
Function LaunchProjectile(){
instance=Instantiate(prefab);
instance.velocity=Random.insideUnitSphere*5;
}
◆function IsInvoking(methodName:string)
描述:是否有任何对methodName的调用在等待?
◆function IsInvoking(methodName:string):bool
描述:是否有任何MonoBehaviour的调用在等待?
◆Function StartCoroutine(routine:IEnumerator):Coroutine
描述:开始一个coroutine
一个coroutine的执行可以任何位置使用yield语句暂停,当coroutine继续的时候yield返回值,当行为需要跨越多个帧的时候,Coroutines是非常好的,当Coroutines几乎没有性能负担。StartCoroutine函数总是立即返回,然而你能够yidle结果,这个将等待直到coroutine执行完成。
当使用javascript时,没有必要使用StartCorutine,编译器会为你做这件事。在写C#代码的时候你必须调用StartCoroutine
//在这个例子中我们显示如何并行调用
//一个coroutine并继续执行这个函数。
//0秒后,打印”Starting0.0”
//0秒后,打印”Before WaitAndPrint Finishes0.0”
//2秒后,打印”WaitAndPrint 2.0”
print(“Starting”+Time.time);
//WaitAndPrint作为一个coroutine开始,并等待直到它完成
WaitAndPrint(2.0)
Print(“Before WaitAndPrint Finishes”+Time.time);
function WaitAndPrint(waitTime:float){
//暂停执行waitTime秒
Yield WaitForSeconds(waitTime);
Print(“WaitAndPrint”+Time.time);
//WaitAndPrint作为一个coroutine开始,并等待直到它完成
Yield WaitAndPrint(2.0);
Print(“Done”+Time.time);
}
C#例子代码如下
//C#例子,在这个例子中我们显示如何并行调用
//一个coroutine并继续执行这个函数
void Start(){
//0秒后,打印”Starting0.0”
//0秒后,打印”Before WaitAndPrint Finishes0.0”
//2秒后,print”waitAndPrint2.0”
Print(“Starting”+Time.time);
StartCoroutine(WaitAndPrint(2.0F));
Print(“Before WaitAndPrint Finishes”+Time.time);
}
IEnumerator WaitAndPrint(float waitTime){
// 暂停waitTime秒
Yield return new WaitForSeconds(waitTime);
Print(“WaitAndPrint”+Time);
}
//c#例子
//在这个例子中我们展示如何调用一个coroutine并等待直到它完成
IEnumerator Start(){
//0秒后,打印”strating0.0”
//2秒后,prints”WaitAndPrint2.0”
//2秒后,打印”Done 2.0”
Print(“Starting”+Time.time);
Yield return StartCoutine(WaitAndPrint(2.0f);
Print(“Done”+Time.time);
}
IEnumerator WaitAndPrint(float waitTime){
//暂停waitTime秒
Yield return new WaitForSeconds(waitTime);
Print(“WaitAndPrint”+Time.time);
}
◆Function StartCoroutine(methodName: string, value: object=null): Coroutine
描述:开始为methodName的Coroutine。
在大多数情况下,你要用StartCoroutine的变体。然而,使用一个字符串方法名的StartCoroutine允许StopCoroutine使用一个特定的方法名称。字符串级本的特定时它有较高的运行时开销来开始coroutine,并且你只能传递一个参数。
//在则合格例子中我们现实如何一个字符串名调用一个coroutine并停止它
Function Start(){
StartCoroutine(“DoSomething”,2.0);
Yield WaitForSeconds(1);
StopCoroutine(”DoSomething”);
}
Function DoSomething(someParameter: float){
While(true)
{
Print(”DoSomething Loop”);
Yield
}
}
◆Function StopAllCoroutines(): void
描述:停止所有运行在这个行为上的Coroutine。
//开始coroutine
StartCoroutine(“DoSomething”);
//紧跟着取消coroutine
Function DoSomething(){
While(true){
Yield;
}
}
StopAllCoroutines();
◆Function StopCoroutine(methodName: string): void
描述:停止所有运行在这个行为上的名为methodName的Coroutine。
请注意只使用一个字符串方法名的StartCoroutine才能使用StopCoroutine停止。
//在这个例子中我们显示如何使用一个字符串名调用一个coroutine并停止它
Function Start(){
StartCoroutine(“DoSomething”,2.0);
Yield WaitForSeconds(1);
StopCoroutine(”DoSomething”);
}
Function DoSomething(someParameter: float){
While(true)
{
Print(”DoSomething Loop”);
Yield
}
}
重载函数
◆Function Awake(): void
描述:当脚本实例被加载时,Awake 被调用。
在游戏开始前,使用Awake 来初始化任何变量或游戏状态。在脚本实例的生命期内Awake 只被调用一次。Awake 在所有物体被初始化之后被调用,因此你可以安全地告诉其他物体或使用如GameObject.FindWithTag来查询它们。每个游戏物体的Awake 以随机的顺序被调用。因此,你应该使用Awake 来再脚本之间设置引用,并使用Start来传递消息。Awake 总是在任何Start函数之前调用。这允许你调整脚本的初始化顺序。Awake 不能作为一个Coroutine
注意对于C#哈Boo用户:使用Awake 而不是构造函数来初始化,因为组件的序列化状态在构造的时候还没有确定。Awake 只被调用一次,就像构造函数。
Private var target: GameObject;
Function Awake(){
Target=GameObject.FindWithTag(‘”Player”)
}
Awake不能作为一个coroutine。
◆Function FixedUpdate (): void
描述:如果MonoBehaviour被启用,这个函数将以固定的帧率调用。
当处理Rigidbody是应该使用FixedUpdate而不是使用Update。例如,当添加一个力到刚体时,你必须在FixedUpdate内以固定的帧率应用而不是在Update内。
//应用一个向上的力到刚体
Function FixedUpdate(){
Rigidbody.AddForce(Vector3.up);
}
力伟到从上一次调用Update的消逝时间,使用Time.deltaTime,这个函数只在Behaviour被启用时调用。重载这个函数,以便给你的组件提供功能。
◆Function LateUpdate (): void
描述:如果该Behaviour被启用,LateUpdate将在每帧中调用。
LateUpdate在所有Update函数被调用后调用。这可用于调整脚本执行顺序。例如,一个跟随相机应该总是在LateUpdate中实现,因为他跟踪Update中移动的物体。
//向前以1米/秒的速度移动物体
Function LateUpdate (){
transfor.Translate(0,0,Time.deltaTime*1);
}
为了得到从最后一个调用LateUpdate的消逝时间,使用Time.deltaTime。如果该Behaviour被启用,该函数将在每帧中调用。重载这个函数,以便给你的组件提供功能。
◆Function OnApplicationPause(pause: bool): void
描述:当玩家暂停时发送到所有游戏物体。
OnApplicationPause可以是一个coroutine,简单地在这个函数中使用yield语句。
◆Function OnApplicationQuit(): void
描述:在应用退出之前发送到所有游戏物体。
在编辑器中当用户停止播放模式时这个被调用。在网页播放器中当web被关闭时这个函数被调用。
◆Function OnBecameInvisible(): void
描述:OnBecameInvisible函数在这个渲染上的脚本。OnBecameVisible和OnBecameInvisible可以用于只需要在需要在物体可见时才进行的计算。
//当它不可见时禁用这个行为
Finction OnBecameInvisible(){
Enabled=false;
}
OnBecameInvisible可以是一个coroutine,简单地在这个函数中使用yield语句。当在编辑器中运行时,场景试图相机也会导致这个函数被调用。
◆Function OnBecameVisible(): void
描述:OnBecameVisible函数在这个渲染器对任何相机变得可见时被调用。
这个消息被发送到所有附加在渲染器上的脚本。OnBecameVisible和OnBecameInvisible可以用于只需要在需要在物体可见时才进行的计算。
//当它不可, 见时禁用这个行为
Finction OnBecameVisible(){
Enabled=false;
}
OnBecameVisible可以是一个coroutine,简单地在这个函数中使用yield语句。当在编辑器中运行时,场景试图相机也会导致这个函数被调用。
◆Function OnCollisionEnter(collisionInfo: Collision): void
描述:
当这个碰撞器/刚体开始接触另一个刚体/碰撞器时OnCollisionEnter被调用。
相对于OnTriggerEnter,OnCollosionEnter传递Collision类而不是Collider,Collision类包含接触点,碰撞速度等细细。如果在函数中不使用CollisionInfo,省略CollisionInfo参数以避免不西药的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
Function OnCollisionEnter(collision: Collision){
//调试绘制所有的接触点和法线
For(var contact: ContactPoint in collision.oontacts){
Debug.DrawRay(contact.point, contact.normal, Color.white);
}
//如果碰撞物体有较大的冲击就播放声音
If(collision.relativeVelocity.magnitude>2)
Audio.Play();
}
OnCollisionEnter可以是一个coroutine,简单地在这个函数中使用yield语句。
◆Function OnCollisionExit(collisionInfo: Collision): void
描述:当这个碰撞器/刚体开始接触另一个刚体/碰撞器时OnCollisionEnter被调用。
相对于OnTriggerExit,OnCollosionExit传递Collision类而不是Collider. Collision类包含接触点,碰撞速度等细细。如果在函数中不使用CollisionInfo,省略CollisionInfo参数以避免不西药的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
Function OnCollisionExit(collision: Collision){
Print(“No longer in contact with”+collisionInfo.transform.name);
}
OnCollisionExit可以是一个coroutine,简单地在这个函数中使用yield语句。
◆function OnCollisionStay(collisionInfo:collision):void
描述:对于每个与刚体碰撞器相触碰的碰撞器刚体,OnCollisionStay将在每一帧中被调用。
相对于OnTriggerStay,OnCollisionStay 传递Collision类而不是Collider.Collision类包含接触点,碰撞速度等细节。如果在函数中不使用collisionInfo省略collisionInfo参数以避免不要必要的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
function OnCollisionStay(CollisionInfo:Collision){
//调试绘制所有的接触点和法线
for (var contact:ContactPoint in collision.contacts){
Debug.DrawRay(contact.point,contact.normal,Color.white);
}
}
OnCollisionStay可以是一个coroutine,也简单地在这个函数中使用yield语句
◆function OnConnectedToServer():void
描述:当成功链接到服务器时在客户端调用这个函数。
function OnConnectedToServer(){
Debug.Log(“Connected to server”);
//发送到本地玩家名称到服务器
}
◆function OnControllerColliderHit(Hit:controllerColliderHit):void
描述:在移动的时候,控制器碰到一个碰撞器时,OnControllerColliderHit被调用。
这可以用来在角色碰到物体时推开物体。
//这个脚本推开所有角色碰到物体时推开物体
Var pushPower=2.0;
Function OnControllerColliderHit(hit: OnControllerColliderHit){
Var body:Rigidbody=hit.collider.attachedRigidboby;
//无刚体
If(body==null||body.isKinematic)
return;
//不推开我们身后的物体
If(hit.moveDirection.y<-0.3)
Return;
//从移动方向计算推的方向
//只推开物体到旁边而不是上下
Var pushDir=Vector3(hit.moveDirection.x,0,hit.moveDirection.z)
//如果知道角色移动有多快
//然后你就可以用它乘以推动速度
//使用推力
Body.velocity=pushDir*pushPower;
}
◆function OnDisable():void
描述:当这个行为禁用或不活动时这个函数被调用。
当物体被销毁的时候这个函数也会被调用并可以用于任何清理的代码。当脚本在编译结束后被加载时,OnDisable将被调用,然后脚本加载完成后OnEnable被调用。
Function OnDisable(){
Print("scrip was remove”);
}
OnDisabe 不能作为一个coroutine.
◆function OnDisconnectedFromServer(mode:NetworkDisconnection):void
描述:当链接挂失或服务器断开时在客户端用这个函数。
Function OnDisconnectedFromServer(info.NetworkDisconnection){
Debug.Log(“Disconnected from server”+info);
}
◆function OnDrawGizmos():void
描述:如果你想绘制可被点的Gizmos时,实现OnDrawGizmos,
这允许你在场景中快速选择重要的物体。
//在物体的位置上绘制光源灯泡
function OnDrawGizmos(){
Gizmos.DrawIcon(transform.position,”light Gizmo.tiff”);
}
◆function OnDrawGizmosSelected():void
描述:如果你想在物体被选择时绘制gizmos,实现这个OnDrawGizmosSelected。
Gizmos只在物体被选择的时候绘制。Gizmos不能点选。这可以设置更容易,例如
一个爆炸脚本可以绘制一个球显示爆炸半径。
var explosionRadius=5.0;
function OnDrawGizmosSelected(){
//选中的时候显示爆炸半径
Gizmos.color=Color.white;
Gizmos.DrawSphere(transfom.position,explosinRadius);
}
◆function OnEnable():void
描述:当物体启用或激活时这个函数被调用
function OnEnbale(){
print(“script was enabled”);
}
◆function OnFailedToconnect(error:NetworkConnectionError);void
描述:当链接因为某些原因失败时在客户端上调用这个函数。
失败的原因作为NetworkConnectionError枚举传入。
function OnFailedToconnect (info:NetworkConnectionError){
Debug.Log(“Could not connect to server”+error);
◆function OnFailedToConnectToMasterServer (error:NetworkConnectionError):void
描述:当链接到主服务器出现问题时在客户端或服务器调用这个函数。
错误的原因作为NetworkConnectionError枚举传入
function OnFailedToConnectToMasterServer(info:NetworkConnectionError){
Debug.Log(“Could not connect to master server”+info);
}
◆function OnGUI():void
描述:OnGUI被调用来渲染并处理GUI事件。
如果Monobehaviour的启用属性被设置为假,OnGUI()将不会被调用。
Function OnGUI(){
If(GUI>Button(Rect(10,10,150,100),”I am a button”)){
Print(“You clicked the button”)
}
}
参考GUI Scrtipting Guide 获取更多信息。
◆function ONJointBreak(breakForce:float):void
描述:当附加到相同游戏物体上的关节被断开时调用
当一个力大于这个关节的breakForce时,关节将被断开,当关节断开时,OnJointBreak将被调用,应用到关节的断开力将被传入,OnJointBreak之后这个关节将自动从游戏物体移除。参见:Joint.breakForce
◆function OnLevelWasLoaded(level:int):void
描述:这个函数在一个新的关卡被加载之后被调用
//level是被加载的关卡的索引。使用菜单项File>Build Settings来查看索引引用的是那个场景,参见:Application.LoadLevel
//当关卡13被加载的关卡的索引”Woohoo”
Function OnLevelWasLoaded(level:int){
If(level==13){
Print(“Woohoo”);
}
}
OnLevelWasLoaded 可以是一个coroutine,简单地在这个函数中使用yield语句。
◆function OnMouseDown():void
描述:当用户在GUIElement或Collider上按下鼠标按钮时OnMouseDown被调用
这个事件被发送到所有附加在Collider或GUIElement的脚本上。
//加载名为“someLevel”的关卡
//来响应用户单击
Function OnMouseDown(){
Application.LoadLevel(“SomeLevel”);
}
这个函数不会在属于Ignore Raycast的层上调用。
OnMouseDown可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送到的有附加在Collider或GUIElement的脚本上。
◆function OnMouseDrag():void
描述:当用户在GUIElement或Collider上点击并按住鼠标时OnMouseDrag被调用。
当鼠标被按下时OnMouseDrag将在每帧中被调用。
//按住鼠标时使用材质颜色变暗
function OnMouseDrag(){
renderer.material.color==Color.white*Time.deltaTime;
}
这个函数不会在属于Ignore Ray的层被调用 。
OnMouseDrag可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送到所有附加在collider或GUIElement的脚本上。
◆Function OnMouseEnter():void
描述:当鼠标进入GUIElement或collider时,OnMouseEnter被调用。
//附加这个脚本到网格
//使用当鼠标经过这个网格时使它变红
Function OnMouseEnter(){
Renderer.material.color=Color.red;
}
这个函数不会在属于Ignore Raycast的层上调用。
OnMouseEnter可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送所有附加在Collider或GUIElement的脚本上。
◆function OnMouseExit():void
描述:当鼠标不再位于GUIElement或Collider上时,OnMouseExit被调用。
OnMouseExit与OnMouseEnter相反
//当鼠标在网格时
//渐变材质的红色组件为零
Function OnMouseExit(){
Rnderer.material.color=Color.white;
}
这个函数不会在属于Ignore Raycast的层上调用。
OnMouseExit可以是一个coroutine,简单地在这个函数中使用yield语句。这个事件被发送到所有附加在Collider或GUIElement上脚本上。
◆function OnMouseOver();void
描述:当鼠标在GUIElement或Collider上时,OnMouseOver被调用。
//当鼠标在网格上时
//渐变材质的红色组件为零
function OnMouseOver(){
renderer.material.color==0.1*Time.deltaTime;
}
这个函数不会在属于Ignore Raycast的层上调用。
OnMouseOver可以是一个coroutine,简单地在这个函数中使用yield语句,这个事件被发送到所有附加在Collider或GUIElement的脚本上。
◆function OnMouseUP():void
描述:当用户已经松开鼠标按钮时OnMouseUp调用。
在GUIElement或Collider上松开鼠标时OnMouseUp被调用。
//加载名为”someLevel”的关卡
//来响应用户单击
function OnMouseUp(){
Application.LoadLevel(“SomeLevel”);
}
这个函数不会在属于Ignore Raycast的层上调用。
OnMouseUp可以是一个coroution,简单地在这个函数yield语句。这个事件被发送到所有附加在Collider或GUIElement的脚本上。
◆function OnNetworkInstantiate(info:NetworkMessageInfo):void
描述:当一个物体使用Network.Instantiate进行网络初始化在该物体上调用这个函数。
这个对于禁用或启用一个已经初始化的物体组件来说是非常有用的,它们的行为取决与它们是在本地还是在远端。
注意:在NetworkMessageInfo里的networkView属性不能在OnNetworkInstantiate里使用。
function OnNetworkInstantiate(info:NetworkMessageInfo){
Debug.Log(“New object instantiated by”+info.sender);
}
◆function onParticleCollision(other:GameObject):void
描述:当一个粒子碰到一个碰撞器时OnParticleCollision被调用。
这个可以在游戏物体被粒子击中时应用伤害到它的上面,这个消息被发送到所有附加到
WorldParticleCollider 的脚本上和被击中的Collider上,这个消息只有当你在
WorldParticleCollider检视面板中启用了sendCollisionMessage时才会被发送。
//应用力到所有被粒子击中的刚体上
function OnParticleCollison(other:GameObject){
var body=other.rigidbody;
if(body){
var direction=other.transform.position+transform.position;
direction=direction.normalized;
body.AddForce(direction*5);
}
}
OnParticleCollision可以是一个coroutine,简单地在这个函数中使用yield语句。
◆function OnPlayConnected(player:NetworkPlayer):void
描述:当一个新玩家成功连接在服务器上调用这个函数。
private var playerCount:int=int=0;
function OnPlayerConnect(player.NetworkPlayer){
Debug.log(“Player”+playerCount+++”connected from”+player.ip.Address+”:”+player.port);
//用玩家的信息构建一个数据结构
}
◆function OnPlayerDisconnected(player:NetworkPlayer):void
描述:当玩家从服务器断开时在服务器上调用这个函数。
function OnPlayerDisconnected (player:NetworkPlayer){
Debug.Log(“Clean up after player”+player);
Network.RemoveRPcs(player);
Network.DestroyPlayerObject(player);
}
◆function OnpostRender():void
描述:OnPostRender在相机渲染场景之后调用。
只有脚本被附加到相机上时才会调用这个函数。OnPostRender可以是一个coroutine,
简单地在这个函数中使用yield语句。
OnPostRender在相机渲染完所有它的物体之后被调用。如果你想在所有相机和GUI被渲染之后做一些事情,使用WaitForEndFrame coroutine
参见:OnPreRender,WaitForEndOfFrame
//当附加到机时,将消除
//相机纹理的alpha通道为纯白色
//如果你有一个渲染纹理并想将它显示在GUI上时可以使用这个函数
Parvate var mat:Material;
function OnPostRender(){
//创建一个只渲染白色到alpha通道的着色器
If(mat)
{
Mat=new Material(“Shader Hidden SetAlpha”+)
“SubShader{“+”pass{”+”ZTest Always Cull off Zwrite Off”+”ColorMaskA”+”Color(1,1,1,1)”+”}”+”}”
+”}”);
}
}
// 用上述着色器绘制一个全屏四边形
GL.PushMatrix();
GL.LoadOrtho();
for(var i=0;i<mat.pssCount;++i){
mat.SetPass(i);
GL.Begin(GL.QUADS);
GL.Vertex3(0,0,0.1);
GL.Vertex3(1,0,0.1);
GL.Vertex3(1,1,0.1);
GL.Vertex3(0,1,0.1);
GL.End();
}
GL.PopMatrix();
}
◆function OnpreCull():void
描述:OnPreCull在相机开始裁剪场景之前调用
裁剪决定那个物体对于相机来说是可见的。OnPreCull仅仅在这个过程之间被调用。
只有脚本被附加到相机上时才会调用这个函数
如果你想改变相机的视觉参数(例如fieldOfView或者仅是变换),就在这里做这个。
场景物体的可见性将基于相机参数在OnPerCull之后确定。
? function OnRender():void
描述:OnpreRender在相机开始渲染场景之前调用。
只用脚本被附加到相机上时才会调用这个函数。
注意如是果你在这里改变了相机的视野参数(例如fieldOfView),它们将影响下一帧。用OnPreCull代替。OnPreRender可以是一个coroutine,简单地在这个函数中使用yield语句。
参见:OnPostRender
? function OnRenderImage(source:RenderTexture,destination:RenderTexture):void
描述:OnRenderImage在所有渲染完成后被调用,来渲染图片的后期处理效果(限于Unity Pro)
这允许你使用基于shader的过滤器来处理最后的图片。进入图片是source渲染纹理结果是destination渲染纹理。当有多个图片过滤附加在相机上时,它们序列化地处理图片,将第一个过滤器的目标作为下一个过滤器的源。
这个消息被发送到所有附加在相机上脚本。
参见:Unity Pro 中的image effects
◆function OnRenderObject(queueindex:int):void
描述:OnRenderObject被用来渲染你自己的物体,使用Graphics.DarwMesh或者其他函数。
queueIndex指定用来渲染物体的render queue。可以使用RenderBeforeQueues属性来指定你想绘制这个物体到哪里渲染队列。
◆function OnserializeNetworkView(stream:Bitstream.info:NetworkMessageInfo):void
描述:用来在一个被网络视监控的脚本中自定义变量同步
它自动决定被序列化的变量是否应该发送或接收,查看下面的例子获取更好的描述:
//这个物体的生命信息
Int currentHealth;
function OnSerializeNetworkView(stream:BitStream,info:NetworkMessageInfo){
if(stream.isWriting){
int health=currentHealth;
stream.Serialize(health);
}
else{
int health=0;
stream.Serialize(health);
currentHealth=health;
}
}
◆function OnServerInitialized():void
描述:当Network.InitializeServer被调用并完成时,在服务器上调用这个函数。
function OnServerInitialized(){
Debug.Log(“Server initialize and ready”);
}
◆function OnTriggerEnter(other:Collider):void
描述:当这个Collider other进入trigger时OnTriggerEnter被调用。
这个消息被发送到这个触发器碰撞器和接触到触发器的刚体(或者是碰撞器如果没有刚体)。注息如果碰撞器附加了一个刚体,也只发送触发器事件。
//销毁所有进入该触发器的物体
function OntriggerEnter(other:Collider){
Destroy(other.gameObject);
}
OnTriggerEnter可以是一个coroutine简单地在这个函数中使用yield语句。
◆function OnTriggerExit(other:Collider):void
描述:当这个Collider other停止触碰trigger时OnTriggerExit被调用。
这个消息被发送到触发和接触到这个触发器的碰撞器。注意如果碰撞附加了一个刚体,也只发送触发器事件。
//觥毁所有离开该触发器的物体
function OntriggerExit (other:Collider){
Destroy(other.gameObject);
}
OnTriggerExit可以是一个coroutine,简单地在这个函数中使用yield语句。
◆function OnTriggerStay(other:Collider):void
描述:对于每个Collider other,当它触碰到trigger时,OnTriggerStay会在每一帧中都被调用。
这个消息被发送到触发器和接触到这个触发器的碰撞器。注意如果碰撞器附加了一个刚体,也只发送触发器事件。
//对所进入这个触发器的刚体使用一个向上的力
function OnTriggerStay(other:Collider){
if(other.attachedRigidbody){
other.attachedRigidbody.AddForce(Vector3.up*10);
}
}
OnTriggerStay可以是一个coroutine,简单地在这个函数中使用yield语句。
◆function OnWillRenderObject():void
描述:如果物体可见,每个相机都会调用OnWiiRenderObject。
这个函数在裁剪过程中被调用,在渲染所有被裁剪的物体之前被调用。可以用这个来创建具有依赖性的渲染纹理,只有在被渲染的物体可见时才更新这个渲染纹理。作为一个例子,水组件就使用这个。
Camera.current将被设置为要渲染这个物体的相机
◆function Reset():void
描述:Reset在用户点击检视面版的上下文菜单或者第一次添加该组件被调用。Reset只在编辑模式下调用。Reset最常用于在检视面板中给定一个好的默认值
//设置target为一个默认的值
//这可以用于跟随相机
var target:GameObject;
function Reset(){
//如果target没有赋值,设置它
if(!target){
target=GameObject.FindWithTag(“play”);
}
}
◆function Start():void
描述:Start在所有Update方法被第一次调用前调用。
Start在行为的生命期内只调用一次。Awake和Start的不同在于Start只在脚本实例被启用时调用。这个允许你延迟所有初始化代码,知道真正需要它们的时候,Awake总是在任何Start函数之前调用。这允许你调整脚本的初始化顺序。Start不能作为一个coroutine
Start函数在所有脚本实例的Awake函数调用之后调用。
//初始化target变量
//target是私有的并且不能在检视面板中编辑
parivate var target:GameObject;
function Start(){
target=GameObject.FindWithTag(“Player”);
}
◆function Update():void
描述:如果MonoBehaviour被启用,Update将在每帧中调用。
Update是最常用的函数,来实现任何游戏行为。
//向前以1米的速度移动物体
function Update(){
transform.Translate(0,0,Time.deltaTime*1);
}
为了得到从最后一次调用Update的消逝时间,使用Time.deltaTime。如果该Behaviour
被启用,该函数将在每帧中调用,重载这个函数,以便给你的组件提供功能。
继承的成员
继承的变量
endbled 启用Behaviours被更新,禁用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 返回type类型的组件,这个组件位于GameObject或任何它的子
物体上,使用深度优先搜索。
GetComponentsInChildren 返回所有type类型的组件,这些组件位于GameObject或任何它
的子物体上。
GetComponents 返回GameObject上所有type类型的组件。
CompareTag 这个游戏物体被标签为tag?
SendmessageUpwards 在这个游戏物体的每个MonoBehaviour和该行为的祖先上
调用名为methodName方法
SendMessage 在这个游戏物体上的每个MonoBehaviour上调用methodName
方法。
BroadcastMessage在这个游戏物体或其任何子上的每个MonoBehaviour上调用
methodName方法。
GetInstanceID 返回该物体的实例ID。
继承的类函数
Operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替。
FindObjectOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
Terrain
类,继承自MonoBehaviour
渲染地形的Terrain
变量
◆var basemapDistance:float
描述:超出basemapDistance的高度图,将使用预先计算的地解析度basemap。
这个可以改善远处块的性能。Unity混合任意数量的地形纹理,使用条图来渲染近处的高度图。
function Start(){
Terrain.activeTerrain.basemapDistance=100;
}
◆var castShadows:bool
描述:地形应该投射阴影?
◆var detailObjectDistance:float
描述:在这个距离内细节将被显示。
function Start(){
Terrain.activeTerrain.detailObjectDistance=40;
}
◆var heightmapMaximumLOD:int
描述:让你实质降低用于渲染的高度图解析度
这个可用在低端的显卡上并不会显示最高的LOD地形。值为0表示总是显示最高细节。
值为1表示三角形数量将减小到1/4,高度图的解析度将是宽度和高度的一半。
function Start(){
Terrain.activeTerrain.heightmapMaximumLOD=1;
}
◆var heightmapPixelError:float
描述:当切换LOD时大约有多少像素时地形将处于错误的情况。
较高的值减少多边形的绘制数量。
function Start(){
Terrain.activeTerrain.heightmapPixelError=10;
}
◆var Lighting:Terrain.Lighting
描述:地形光照模式
参见:TerrainLighting枚举,Terrain Lightmap,terrain Settings
◆var terrainData:TerrainData
描述:存储在高度图中的地形数据,地形纹理,细节网格和树。
◆var treebillboardDistance:float
描述:到相机的距离超过这个值,树只被作为公告板渲染。
降低这个值将改善性能,但是使过度看起来更差因为公告板和树的不同将更加明显。
Function Start(){
Terrain.activeTerrain.treeBillboardDistance=100;
}
◆var treeCrossFadeLength:float
描述:树从公告变换到网格到网格的总距离增量。
降低这个值将使变换发生的越快。设置为0时,在从网格切换分告表示时将立即发生。
function Start(){
Terrain.activeTerrain.treeCrossFadeLength=20;
}
◆var treeDistance:float
描述:渲染树的最大距离。
这个值越高,越远的树将看到,运行的也更慢。
参见:Terrain.treeBillboardDistance
function Start(){
Terrain.activeTerrain.treeDistance=2000;
}
◆var treeMaximumFull.ODCount:int
描述:全LOD时渲染树的最大数量。
这个是一个简单的设置用来阻止太多的楼以过高的解析度和密度被绘制。因为如果
treeMaximumFullLodCount过高,树将不会消失,你应该修改treeBillboardDistance为不
包含。
Function Start(){
Terrain.activeTerrain.treeMaximumFullLODCount=200;
}
函数
◆function SampleHeight(worldPositon:Vector3):float
描述:在世界空间的给定位置处采样高度。
function LateUpdate(){
transfom.positon.y=Terrain.activeTerrain.SampleHeght(transfom.position);
}
◆function SetNeighbors(left:Terrain,top:Terrain,right:Terrain,bottom:Terrain):void
描述:允许你在相邻地形间设置连接
这个确保LOD在相邻地形上相同。注意,在一个地形上调用这个函数是不够的,你需要在每个地形上设置邻居。
类变量
◆static var activeTerrain: Terrain
描述:激活的地形。这个是用来在场景中获取主地形的快捷方式。
类方法
◆Static functin CreateTerrainGameObject(assignTerrain: TerrainData): GameObject
描述:从TerrainData创建一个包含碰撞器的地形。
继承的成员
继承的变量
Enabled 启用Behaviour被更新,禁用Behaviours不被更新。
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 该物体是否被隐藏,保存在场景中或被用户修改
继承的函数
Invok e 在time秒调用methodName方法。
Invok Repeating 在time秒调用methodName方法。
CancelInvoke 取消所有在这个MonoBehaviour上的调用
IsInvoking 是否有任何对methodName的调用在等待?
StartCoroutine 开始一个coroutine
StopCoroutine 停止所有运行在这个行为上的名为methodName的coroutine
StopAllCoroutines 停止所有运行在这个行为上的coroutine
GetComponent 返回type类型的组件,如果游戏物体上附加了一个,如果没有
返回null。
GetComponcetInChildren 返回type类型的组件,这个组件位于GameObject或任何它的子
物体上。使用深度优先搜索
GetComponcetsInChildren 返回所有type类型组件,这些组件位于Gameobject或任何它的
子物体上。
GetComponents 返回GameObject上所有type类型的组件。
CompareTag 这个游戏物体被标签为tag?
SendMessageUpwards 在这个游戏物体的每个MonoBehaviour和该行为的祖先上调用
名为methodName方法。
SendMessage 在这个游戏物体上的每个MonoBehaviour上调用methodName
方法。
BroadcastMessage在这个游戏物体或其2任何子的每个MonoBehaviour上调用
methodName方法。
GetInstanceID 返回该物体的实例ID。
继承的消息传递
Update 如果MonoBehaviour被启用,Update将在每帧中
调用。
LateUpdate 如果该Behaviour被禁用,LateUpdate将在每帧中
调用。
FixedUpdate 如果MonoBehaviour被启用,这个函数将在每帧中调用。
Awake 当脚本实例被加载时,Awake被调用。
StartStart在所有Update方法被第一次调用前调用。
Reset Reset在用户点击检视面板的上下文菜单或第一次添加该组件时
被调用。
OnMouseEnter当鼠标进入GUIElement或Collider时,OnMouseEnter被调用。
OnMouseOver 当鼠标在GUIElement或Collider时,OnMouseEnter被调用。
OnMouseExit 当鼠标不再位于GUIElement或Collider上时,OnMouseExit被调用。
OnMouseDown当用户在GUIElement或Collider上按下鼠标按钮时
,OnMouseDown被调用。
OnMouseUp 当户已经松开鼠标按钮时OnMouseUp被调用。
OnMouseDrag 当用户在EUIElement或Collider上点击并按住鼠标时
OnMouseDrag被调用。
OnTriggerEnter当这个Collider other进入trigger时OnTriggerEnter被调用。
OnTriggerExit 当这个Collider other停止触碰trigger进OnTriggerExit被调用。
OnTriggerStay 对于每个Collider other,当它触碰到trigger时,OnTriggerStay
会在每一帧中都会被调用。
OnCollisionEnter当这个碰撞器刚体开始触碰另一个刚体碰撞器
时OnCollisionEnter被调用。
OnCollisonExit 对于每个与碰撞器刚体停止触碰另一个刚体碰撞器时
OnCollisionExit被调用。
OnCollisonStay对于每个与刚体碰撞器相触的碰撞器刚体OnCollisonStay将在每
一帧中被调用。
OnControllerColliderHit 在移动的时候,控制器碰到一个碰撞器时OnControllerColliderHit
被调用。
OnJointBreak 当附加到相同游戏物体上的关节被断开时调用。
OnParticleCollision当一个粒子碰到一个碰撞器时OnParticleCollision被调用。
OnBecameVisibleOnBecamevisible函数在这个渲染器对任何相机变得可见时被
调用。
OnBecameInvisibleOnBecamevisible函数在这个渲染器对任何相机变得不可见时被
调用。
OnLevelWasLoaded这个函数在一个新的关卡被加载之后被调用。
OnEnable 当物体启用或激活时这个函数被调用。
OnDisable 当这个行为禁用或不活动时这个函数被调用。
OnPreCull OnPreCull在相机开始裁剪场景之前调用。
OnPreRender OnPreRender在相机开始渲染场景之后调用。
OnPostRender OnPostRender 在相渲染场景之后调用。
OnRenderObjectOnRenderObject被用来渲染你自己的物体,使用
Graphics.DrawMesh或者其他函数。
OnWillRenderObject 如果物体可见,每个相机都会调用OnWillRenderObject。
OnGUI OnGUI被调用来渲染并处理GUI事件。
OnRenderImageOnRenderImage在所有渲染完成后被调用,来渲染图片。
OnDrawGizmosSelected 如果你想在物体被选择时绘制gizmos,实现这个
OnDrawGizmosSelected.
OnDrawGizmos如果你想绘制可被点选的gizmos时,实现OnDrawGizmos。
OnApplicationPause 当玩家暂停时发送到所有游戏物体。
OnApllicationQuit在应用退出之前发送到所有游戏物体。
OnPlayerConnected 当一个新玩家成功连接时在服务器上调用这个函数。
OnServerInitialized当Network.InitializeServer被调用并完成时,在服务上调用这
个函数。
OnConnectedToServer 当成功链接到服务器上时在客户端调用这个函数。
OnPlayerDisconnected 当玩家从服务器断开时在服务器上调用这个函数。
OndisconnectedFormServer 当链接丢失或服务器断开时在客户端调用这个函数。
OnFailedToConnect当链接因为某些原失败时在客户端上调用这个
函数
OnFailedToConnectToMasterServer 当链接到主服务器出现问题时在客户端或服务器端调用这个函数。
OnNetworkInstantiate 当一个物体使用Network.Instantiate进行网络初始化时在该物体上调用这个函数。
OnSerializeNetworkView 用来在一个被网络视监控的脚本中自定义变量同步。
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate 立即销毁物体obj。强烈建议使用Destroy代替。
FindObjectsOfType 返回所有类型为type的激活物体。
FindObjectOfType 返回第一个类型为type的激活物体。
operator == 比较两个物体是否相同。
operator != 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
NetworkView
类,继承自Behaviour
网络视是多用户游戏的绑定物。
使用这个你可以准确定义什么应该通过网络同步,和如何同步,游戏物体可以有NetworkView组件,该组件可以被定义为观察物体的其他组件,可以在Network View manual page和component reference page获取更多信息。
变量
◆ var group : int
描述: 这个网络视所在的网格组。
所有的网格消息和RPC调用通过这个组。
Function Awake(){
//通过组1发送来自这个网格视的所有消息
Network View.group=1;
}
◆ var isMine : bool
描述:这个网格视是有这个物体控制吗?
Function OnNetworkInstantiate(info: NetworkMessageInfo){
If{networkView.isMine}
Debug.Log(“New object instanted by me”);
Else
Debug.Log(“New object instantiated by”+info.sender);
}
◆ var obseved : Component
描述:网络视监控的组件。
//打印含有由数组中给出的viewID的对象的名称(Print the names of the objects which have the view IDs given in the array)
Function PrintNames(viewIDs: Array){
For (var ID: NetworkViewID in IDs){
Debug.log(“Finding”+ID);
Var view : NetworkView = networkView.Find(ID);
Debug.log(view.observed.name);
}
}
◆ var owner : NetworkPlayer
描述: 拥有这个网络视的NetworkPlayer
function OnNetworkInstantiate(info: NetworkMessageInfo){
if(!networkView.isMine)
Debug.log(“New object instantiated by” + networkView.owner);
}
◆ var stateSynchrohization: NetworkStateSynchronization
描述:为这个网络视设置的NetworkStateSynchronization类型。
确保NetworkView在所有机器上使用相同可靠的方法是你的责任。在状态同步已经发生后不要在运行时改变状态的可靠性。
◆ var viewID: NetworkViewID
描述:这个网络视的ViewID。
函数
◆ function RPC(name: string, mode: RPCMode, params args:object[]): void
描述:在所有连接端调用一个RPC函数。
调用的函数必须有@RPC标志([RPC]用于C Sharp)。NetworkView必须附加到GameObject,在这个物体上RPC函数能够被调用。NetworkView用于其他什么地方或者是仅仅用于RPC函数是没有关系的。如果他仅仅用于RPC函数,state synchronization应该被关掉。Ovserved属性设置为none,在整个场景中RPC函数的名称应该是唯一的,如果不同脚本的两个RPC函数具有相同的名称,仅有一个会被调用。RPC调用总是确保执行的顺序与他们调用的顺序相同。用NetworkView.group为NetworkView设置的通信用,被用于RPC调用。为了获取RPC自身的信息,可以添加一个NetworkMessageInfo参数到函数申明中,它将自动包含这个信息。这样的做的时候你不需要改变调用RPC函数的方式,可以参考manual的RPC部分以便获取更多关于RPC的信息。可用的RPC参数为int,float,string,NetworkPlayer,NetworkViewID,Vector3和Quaternion。
var cubePrefab : Transform;
function OnGUI()
{
if (GUILayout.Button(“SpawnBox”))
{
var viewID = Netwok.AllocateViewID();
networkView.RPC(“SpawnBox”,
RPCMode.AllBuffered,
viewID,
transform.position);
}
}
@RPC
function SpawnBox (viewID : NetworkViewID, location : Vector3) {
// Instantate the prefab locally
var clone : Transform;
clone = Instantiate(cubePrefab, location, Quaternion.identity);
var nView : NetworkView;
nView = clone.GetComponent(NetworkView);
nView.viewID = viewID;
}
◆ function RPC(name: string, target: NetworkPlayer, params args: object[]): void
描述:在特定的玩家端调用RPC
◆ function SetSeope(player: NetworkPlayer, relevancy: bool): bool
描述:相对于一个特定的网络玩家这是网络视的范围
这可以用来实现相关设置,设置它为真假取决于你是否想这个玩家从网络接收更新。
类方法
◆ static function Find(viewID: NetworkViewID): NetworkView
描述:基于NetworkViewID查找一个网络视。
// 打印物体的名称,这些物体具有数组中给定的视ID (Print the names of the objects which have the view IDs given in the array)
function PrintNames(viewIDs : Array) {
for (var ID: NetworkViewID in IDs) {
Debug.Log("Finding "+ID);
var view : NetworkView = networkView.Find(ID);
Debug.Log(view.observed.name);
}
}
继承的成员
继承的变量
enabled 启用Behaviours被更新,禁用Behaviours不被更新。
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的AudioSource(如果没有为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 返回type类型的组件,这个组件位于GameObject或任何它的子物体上,使用深度优先搜索。
GetComponentsInChildren 返回所有type类型的组件,这些组件位于GameObject或任何它的子物体上。
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 加载新场景时确保物体target不被自动销毁。
Projector
类,继承自Behaviour。
脚本界面就是一个Projector组件。
这个Projector可用于场景工程中的任何材料——就像一个真实的世界。这类的属性值就是Projector的检查值。
它可以用来执行斑点或投射阴影。你也可以投射纹理动画或渲染纹理在电影场景的另一个部分。所有物体投影的视图在其观点和提供的材料中。
没有快捷方式在游戏对象或者组件来访问Projector,所以你必须使用GetComponent来做:
function Start() {
// 获取projector
Var proj.Projector=GetComponent(Projector);
//使用这个
Proj.nearClipPlane=0.5;
}
参见:projector.component;
变量
◆var aspectRatio:float
描述:投影的长宽比。
这个是投影的宽度除以高度。比为1.0使这个投影为正方形:比为2.0使得宽为高的2倍。
function Start() {
var proj : Projector = GetComponent (Projector);
proj.aspectRatio = 2.0;
}
参见:projector component.
◆var farClipPlane:float
描述:远裁剪面的距离。
投影器将不会影响任何运离这个距离的物体。
function Start() {
var proj : Projector = GetComponent (Projector);
proj.farClipPlane = 20.0;
}
参见:projector component
◆var fieldofView:float
描述:投影的视野,以度为单位。
这是垂直视野:水平FOV取决于aspectRatio。当投射器是正交时fieldOfView被忽略
(参考orthographic)
function Start() {
var proj : Projector = GetComponent (Projector);
proj.fieldOfView = 80.0;
}
参见:project component
◆var ignoreLayers:int
描述:那个物体层将这个投射器忽略。
参见layer mask
缺省为零,没有层被忽略,在ignoreLayers中设置的每个位将使这个层不会被投射器影
响。
function Start() {
var proj : Projector = GetComponent (Projector);
//使投射器忽略默认的(0)层
proj.ignoreLayers = (1<<0);
}
参见:projector component,Layers.
◆var material:material
描述:这个材质将被投射到每个物体上
如果没有设置材质,投射器不会做任何事情,Standard Assets中的Blob.Shadow文件夹包含一个投射器材质的例子
参见:projector component,Material类。
◆var nearClipPlane:float
描述:近裁剪面的距离。
投影器将不会影响任何比这个距离近的物体。
function Start() {
var proj : Projector = GetComponent (Projector);
proj.nearClipPlane = 0.5;
}
参见:projector component;
◆var orthographic:bool
描述:投射是正交的(true)还是透视的(false)?
当正交为true时,投影被orghographicSize定义。
当正交为false时,投射被fieldOfView定义
function Start() {
var proj : Projector = GetComponent (Projector);
proj.orthographic = true;
}
参见:projector component
◆var orthographicSize:float
描述:在正交模式下投射的一半尺寸。
这个为投影体垂直大小的一半。水平投射的大小取决于aspectRatio,投射器不是正交时,
orthographicSize被忽略(参考orthographic)
function Start() {
var proj : Projector = GetComponent (Projector);
proj.orthographic = true;
proj.orthographicSize = 2.0;
}
参见:projector component
继承的成员
继承的变量
enabled 启用Behaviours被更新,禁用Behaviours不被更新。
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)。
guiText 附加到这个GameObject的GUIText(如果没有为null)。
networkView附加到这个GameObject的NetworkView(如果没有为null)。
Collider 附加到这个GameObject的Collider(如果没有为null)。
hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
particleEmitter 附加到这个GameObject的ParticleEmitter(如果没有为null)。
gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
Tag 这个游戏的标签。
Name 对象的名称。
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
继承的函数
GetComponet 返回type类型的组件,如果游戏物体上附加一个,如果没有返回null。
GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
GetComponets返回Gameobject所有type类型的组件。
CompareTag 这游戏物体被标签为tag?
SendMessageUpwards 在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
methodName方法。
BoradcastMessage 在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
GetInstanceID 返回该物体的实例id。
继承的类函数
Operator bool 这个物体存在吗?
Instatiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
FindObjectsOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
Skybox
类,继承自Behaviour
Skybox component的脚本接口
天空盒只有material属性
参见:skybox component
变量
◆var material:Material
描述:该天空盒使用的材质。
参见:skybox component
继承的成员
继承的变量
Enabled 启用Behaviours被更新,禁用Behaviours不被更新。
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)。
guiText 附加到这个GameObject的GUIText(如果没有为null)。
networkView附加到这个GameObject的NetworkView(如果没有为null)。
Collider 附加到这个GameObject的Collider(如果没有为null)。
hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
particleEmitter 附加到这个GameObject的ParticleEmitter(如果没有为null)。
gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
Tag 这个游戏的标签。
Name 对象的名称。
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
继承的函数
GetComponet返回type类型的组件,如果游戏物体上附加一个,如果没有返
回null。
GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
GetComponets返回Gameobject所有type类型的组件。
CompareTag 这游戏物体被标签为tag?
SendMessageUpwards 在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
methodName方法。
BoradcastMessage 在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
GetInstanceID 返回该物体的实例id。
继承的类函数
Operator bool 这个物体存在吗?
Instatiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
FindObjectsOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
collider
类,继承自Component
所有碰撞器的基类
参见:BoxCollider,SphereCollider,CapsuleCollider,MeshCollider,PhysicCollider,Rigidbody.
如果你打算经常移动一个碰撞器,建议再附加一个运动学刚体。
变量
◆var attachedRigidbody:Rigidbody
描述:该碰撞器所附加的刚体。
如果碰撞器附加到非刚体上返回null。
碰撞器被自动链接到刚体,这个刚体附加在与碰撞器相同的游戏物体或者父游戏物体上。
//升起附加在碰撞器上的刚体
Collider.attachedRigidbody.AddForce(1,0,1);
◆var bounds:Bounds
描述:碰撞器在世界空间中的包围盒
◆var isTrigger:bool
描述:该碰撞器是一个触发器?
触发器不会与刚体碰撞,当刚体进入或离开这个触发器时,触发器将发送OnTriggerEnter
OnTriggerExit和OnTriggerStay.
//将附加的碰撞器转化为一个触发器
Collider.isTrigger=true;
◆var material:PhysicMaterial
描述:该碰撞器使用的材质。
如果材质被碰撞器共享,它将复制材质并将它赋给碰撞器。
//让碰撞器你冰一样
Collider.material.dynamicFriction=0;
collider.material.staticFricton=0;
◆var sharedMaterial:PhysicMaterial
描述:该碰撞器的共享物理材质。
修改这个材质将改变所有使用这个材质的碰撞器的表面属性。大多数情况下,你只要修改Collider.material。
Var material:PhysicMaterial;
Collider.shareMaterial=material;
函数
◆function ClosestPointOnBounds(position:Vector3):Vector3
描述:到碰撞器包围上最近的点。
这可以用来计算受到爆炸伤害时伤害点数。
var hitPoints=100.0;
function ApplyHitPoint(explosionPos:Vector3,radius:float){
//从爆炸位置到刚体表面的距离
var closetPoint=collider.ClosePointOnBounds(explosionPos);
var distance=Vector3f.Distance(closestPoint,explosionPos);
//伤害点数随着到伤害点的距离而降低
Var hitPoints=1.0-Math.Clamp0|(distance/radius);
//这是我们要用的最终伤害点数。最大为10
hitPoints=10;
}
◆function Raycast(ray:Ray,outhitInfo:RaycastHIt,distance:float):bool
参数
ray 射线的开始点和方向。
hitInfo 如果没有近回真,hitInfo将包含更多关于碰撞器被碰到什么地方的信息(参考:
RaycastHit).
Distance 射线的长度
返回:布尔值-当射线碰到任何碰撞器时为真,否则为假。
描述:投射一个Ray,它忽略所有碰撞器除了这个。
同上使用ray.origin和ray.direction而不是origin和disrection.
var ray=Camera.main.ScreenPointToRay(Input.mousePostion);
var hit:RaycastHit;
if(collider.Raycast(ray,hit,100){
Debug.drawLine(ray.origin,hit.point);
}
消息传递
◆function OnCollisionEnter(collisionInfo:Collision):void
描述:当这个碰撞器/刚体开始触碰另一个刚体/碰撞器时OnCollisionEnter被调用。
相对于OnTriggerEnter,OnCollisionEnter传递Collision类而不是Collider.Collision类包含接触点,碰撞器速度等细节。如果在函数中不使用CollisionInfo,省略collisionInfo参数以避免不必要的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
◆Function OnCollisionEnter(collision:Collision){
//调试绘制所有的接触点和法线
for(var contact:ContacePoint in collision.contacts){
Debug.DrawRay(contact.point,contact.normal,color.white);
}
//如果碰撞物体有较大的冲击就播放声音
If(collision.relativeVelocity.magnitude.2)
Audio.Play();
}
//一枚手榴弹
//在击中一个表面时初始化一个爆炸预设
//然后销毁它
var exploionPrefab:Transform;
function OnCollisionEnter(collision:Collision){
//旋转这个物体使y轴面向沿着表面法线的方向
var contact=collision.contact[0];
var rot=Quaternion.FromToRotation(Vector3.up,contact.normal);
var pos=contact.point;
Instantiate(exploionPrefab,pos,rot);
Destroy(gameObject);
}
◆function OnCollisionExit(collisionInfo:Collision):void
描述:当这个碰撞器/刚体停止触碰另一个刚体/碰撞器时OnCollisionExit被调用。
相当于OnTriggerExit,OnCollisionExit传递Collision类而不是Collider.Collision类包含接触
点,碰撞速度等细节。如果在函数中不使用collisionInfo,省略collisionInfo参数以避免不必要的计算,注意如果碰撞器附加了一个非动力学刚体,也只发关碰撞事件。
function OnCollisionExit(collisionInfo:Collision){
print(“No longer in contact with”+collisionInfo.transform.name);
}
◆function OnCollisionStay(collisionInfo:Collision):void
描述:对于每个与刚体/碰撞器相触碰的碰撞器/刚体,OnCollisionStay将在每一帧中被调用。
相当于OnTriggerStay,OnCollisionStay传递Collision类而不是Collider.Collision类包含接
触点,碰撞速度等细节。如果在函数中不使用collisionInfo,省略collisionInfo参数以避免
不必要的计算。注意如果碰撞器附加了一个非动力学刚体,也只发送碰撞事件。
function OnCollisionStay(collisionInfo:Collision){
//调试绘制所有的接触点和法线
for(var contact:ContactPoint in collision.contacts){
Debug.DrawRay(contact.point,contact.normal,color.white);
}
}
◆function OnTriggerEnter(other:Collider):void
描述:当这个Collider other进入trigger时OnTriggerEnter被调用。
这个消息被发送到这个触发器碰撞器和接触到触发器的刚体(或者是碰撞器如果没有刚体)。注意如果碰撞器附加了一个
刚体,也只发送触发器事件。
//销毁所有进入该触发器的物体
function OnTriggerEnter(other:Collider){
Destroy(other.gameObject);
}
◆function OnTriggerExit(other:Collider):void
描述:当这个Collider other停止触碰trigger时OnTriggerExit被调用。
这个消息被发送到触发器和拉触到这个触发器的碰撞器。注意如果碰撞器附加了一个
刚体,也只发送触发器事件。
销毁所有离开该触发器的物体
function OnTriggerExit(other:Collider){
Destroy(other.gameObject);
}
◆function OnTriggerStay(other:collider):void
描述:对于每个Collider other,当它触碰到trigger 时,OnTriggerStay会在每一帧中都被调用。
这个消息被发送到触发器和接触到这个触发器的碰撞器。注意如果碰撞器附加了一个刚体,也只发送触发器事件。
//对所进入这个触发器的刚体使用一个向上的力
function OnTriggerStay(other:Collider){
if(other.atachedRigidbody){
other.attachedRigidbody.AddForce(Vector3.up*10);
}
}
继承的成员
继承的变量
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)。
guiText 附加到这个GameObject的GUIText(如果没有为null)。
networkView附加到这个GameObject的NetworkView(如果没有为null)。
Collider 附加到这个GameObject的Collider(如果没有为null)。
hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
particleEmitter 附加到这个GameObject的ParticleEmitter(如果没有为null)。
gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
tag 这个游戏的标签。
name 对象的名称。
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
继承的函数
GetComponet返回type类型的组件,如果游戏物体上附加一个,如果没有返
回null。
GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
GetComponets返回Gameobject所有type类型的组件。
CompareTag 这游戏物体被标签为tag?
SendMessageUpwards 在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
methodName方法。
BoradcastMessage 在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
GetInstanceID 返回该物体的实例id。
继承的类函数
Operator bool 这个物体存在吗?
Instatiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
FindObjectsOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
BosCollider
类,继承自Collider
一个盒状的简单碰撞器
参见:SphereCollider,copsuleCollider,PhysicMaterial,Rigidbody
变量
◆var center:vector3
描述:box的中心,基于物体局部空间。
//重置中心到变换的位置
collider.center=Vector3.zero;
◆var size:Vector3
描述:box的尺寸,基于物体局部空间
该box的尺寸将随着变换的缩放面缩放。
//使这个box碰撞器变长
collider.size=Vector3(10,1,1);
继承的成员
继承的变量
attachedRigidbody 该碰撞器所附加的刚体。
isTrigger该碰撞器是一个触发器?
material 该碰撞器使用的材质。
sharedMaterial 该碰撞器的共享物体材质。
bounds 碰撞器在世界空间中包围盘。
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的AudioSourec(如果没有为null)。
guiText 附加到这个GameObject的GUIText(如果没有为null)。
networkView附加到这个GameObject的NetworkView(如果没有为null)。
Collider 附加到这个GameObject的Collider(如果没有为null)。
hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
particleEmitter 附加到这个GameObject的ParticleEmitter(如果没有为null)。
gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
Tag 这个游戏的标签。
Name 对象的名称。
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
继承的函数
ClosestPointOnBounds 附加碰撞器到包围盒最近的点。
Raycast 投射一个Ray,它忽略所有的碰撞器除了这个。
GetComponet 返回type类型的组件,如果游戏物体上附加一个,如果没有返回null。
GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
GetComponets返回Gameobject所有type类型的组件。
CompareTag 这游戏物体被标签为tag?
SendMessageUpwards 在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
methodName方法。
BoradcastMessage 在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
GetInstanceID 返回该物体的实例id。
继承的消息传递
OnTriggerEnter当这个Collider other进入trigger进OnTriggerEnter被调用。
OnTriggerExit 当这个Collider other停止触碰trigger时OnTriggerExit被调用。
OnTriggerStay 对于每个Collider other,当它触碰到trigger时,OnTriggerStay会
在每一帧中都被调用。
OnCollisionEnter 当这个碰撞器/刚体开始触碰另一个刚体/碰撞器时
OnCollisionEnter被调用。
OnCollisionExit 当这个碰撞器/刚体停止触碰另一个刚体/碰撞器时OnCollisionExit
被调用
OnCollisionStay 对于每个与刚体/碰撞器相触碰的碰撞器/刚体OnCollisionStay将在每
一帧中被调用。
继承的类函数
Operator bool 这个物体存在吗?
Instatiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
FindObjectsOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
CapsuleCollider
类,继承自Collider
一个胶囊状的简单碰撞器
Capsules是术状的并在每端有一个半球。
参见:BoxCollider,SphereCollder,PhysicMaterial,Rigidbody
变量
◆var center:vector3
描述:胶囊的中心,基于物体的局部空间。
//重置中心到变换的位置
collider.center=Vector3.zero;
◆var direction:int
描述:胶囊的方向
0->胶囊的高度沿着x轴。1->胶囊的高度沿着y轴。2->胶囊的高度沿着z轴。
//使胶囊的高度沿着x轴
collider.direction=0;
◆var height:float
描述:胶囊的高度,基于物体的局部空间
该胶囊的高度将随着变换的缩放而缩放。注意height为包含两端两个半球的实际高度。
collider.height=5;
◆var radius:float
描述:球的半径,基于物体的局部空间。
该胶囊的半径随着变换的缩放而缩放。
collider.radius=1;
继承的成员
继承的变量
attachedRigidbody 该碰撞器所附加的刚体。
isTrigger 该碰撞器是一个触发器?
material 该碰撞器使用的材质。
sharedMaterial 该碰撞器的共享物体材质。
bounds 碰撞器在世界空间中包围盘。
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的AudioSourec(如果没有为null)。
guiText 附加到这个GameObject的GUIText(如果没有为null)。
networkView附加到这个GameObject的NetworkView(如果没有为null)。
Collider 附加到这个GameObject的Collider(如果没有为null)。
hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
particleEmitter 附加到这个GameObject的ParticleEmitter(如果没有为null)。
gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
Tag 这个游戏的标签。
Name 对象的名称。
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
继承的函数
ClosestPointOnBounds 附加碰撞器到包围盒最近的点。
Raycast 投射一个Ray,它忽略所有的碰撞器除了这个。
GetComponet 返回type类型的组件,如果游戏物体上附加一个,如果没有返回null。
GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
GetComponets返回Gameobject所有type类型的组件。
CompareTag 这游戏物体被标签为tag?
SendMessageUpwards 在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
methodName方法。
BoradcastMessage 在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
GetInstanceID 返回该物体的实例id。
继承的消息传递
OnTriggerEnter当这个Collider other进入trigger进OnTriggerEnter被调用。
OnTriggerExit 当这个Collider other停止触碰trigger时OnTriggerExit被调用。
OnTriggerStay 对于每个Collider other,当它触碰到trigger时,OnTriggerStay会
在每一帧中都被调用。
OnCollisionEnter 当这个碰撞器/刚体开始触碰另一个刚体/碰撞器时
OnCollisionEnter被调用。
OnCollisionExit 当这个碰撞器/刚体停止触碰另一个刚体/碰撞器时OnCollisionExit
被调用
OnCollisionStay 对于每个与刚体/碰撞器相触碰的碰撞器/刚体OnCollisionStay将在每
一帧中被调用。
继承的类函数
Operator bool 这个物体存在吗?
Instatiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
FindObjectsOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
CharactController
类,继承自Collider
CharacterController允许你很容易地做受到碰撞制约的移动,而无需处理刚体。
CharacterController不会受力, 的影响,并且只有在调用 Move函数时才会移动,然后这个控制器将实现移动,但是会受到碰撞的制约。
参见:Character Controller component和Character animation examples
变量
◆var center:Vector3
描述:角色胶囊相对于变换的位置的中心。
//向上移动胶囊的中心
var Controller. CharacterController=GetComponent(CharacterController);
controller.center=Vector3(0,1,0);
◆var collisionFlags:CollisionFlags
描述:在最后一次调用CharacterController.Move时,胶囊的哪个部分与环境发生了碰撞。
function Update(){
var controller:CharacterController=GetComponent(CharacterController);
if((controller collisionFlags&collisionFlags.Above)!=0)
print(“touched the celling”);
}
◆var detectCollisions:bool
描述:其他刚体或角色控制器应该与这个角色控制器碰撞吗(默认总是启用的)?
这个方法不会影响角色移动时的碰撞检测。它控制角色和其他物体之间的碰撞。例如,
一个箱子可以阻止控制器的运动,但是作为模拟的一部分这个箱子可以进入控制器。这可以用于临时禁用角色控制器。例如,你也许想装载角色到汽车上并禁用碰撞直到再次退出汽车。注意这只影响其他没有与碰撞的物体。detectCollisions不是可序列化的。也就说,它不会显示要检视面板中并且当在场景中实例化或保存这个控制器时,它将不被保存。
GetComponent(CharacterController).detectCollisions=false;
◆var height:float
描述:这个胶囊的高度
//设置控制器的高度为2.0
var controller:CharacterController=GetComponent(CharacterController);
controller.height=2.0;
◆var isGrounded:bool
描述:CharacterController上一次移动的时候是否接触地面?
function Update(){
var controller.CharacterController=GetComponent(CharacterController);
if(controller.isGronded){
print(“We are grounded”)
}
}
◆var radius:float
描述:角色胶囊的半径
//这只控制器的半径为0.3
var controller:CharacterController=GetComponent(CharacterController);
controller.radius=0.3;
◆var slopLimit:float
描述:角色控制器的斜度限制
//设置控制器的斜度限制为45
var controller:CharacterController=GetComponent(CharacterController);
controller.slopLimit=45.0;
◆var stepOffset:float
描述:角色控制器的步高,以米为单位。
//这只控制器的步高为2.0
var controller:CharacterController=GetComponent(CharacterController);
controller.stepOffset=2.0;
◆var velocity:Vector3
描述:角色的当前速度
这允许你知道角色实际的行走有多快,例如当它碰到墙时这个值为零向量
function Update(){
var controller:CharacterController=GetComponent(CharacterController);
var horizontalVelocity=controller.velocity;
horizontalVelocity=0;
//x-z平面上的速率,忽略其他任何速率
var horizontalSpeed= horizontalVelocity.y;
//整体速率
var overallSpeed=controller.velocity.magnitude;
}
函数
◆function Move(motion:Vector3):CollisionFlags
描述:一个更复杂的移动函数,可以使用绝对移动增量。
试图由motion来移动控制器,这个运动只受制于碰撞,它将沿着碰撞器滑动,
collisionFlags为移动期间所发生的碰撞总和。这个函数不使用任何重力。
//这个脚本基于方向键向前
//和两边移动角色控制器
//按下空格后它也会跳跃
//确保这个与角色控制器附加在同一个游戏物体上
var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;
private var moveDirection = Vector3.zero;
function FixedUpdate() {
var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded) {
//我们在地面上,因此重计算
//直接沿轴方向移动
moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
}
}
// 使用重力
moveDirection.y -= gravity * Time.deltaTime;
// 移动控制器
controller.Move(moveDirection * Time.deltaTime);
}
◆function SimpleMove(speed:Vector3);bool
描述:以speed移动角色
沿着y轴的速度将忽略。速度单位m/s,重力被自动应用。返回角色是否在地面
上。
var speed = 3.0;
var rotateSpeed = 3.0;
function Update (){
var controller : CharacterController = GetComponent(CharacterController);
// Rotate around y - axis
transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);
// Move forward / backward
var forward = transform.TransformDirection(Vector3.forward);
var curSpeed = speed * Input.GetAxis ("Vertical");
controller.SimpleMove(forward * curSpeed);
}
@script RequireComponent(CharacterController)
消息传递
◆function OnControllerColliderHit(hit:ControllerColliderHit):void
描述:在移动的时候,控制器碰到一个碰撞器时,OnControllerColliderHit被调用。
这可以用来在角色碰到物体时推开物体。
//这个脚本推开所有碰到的刚体
var pushPower = 2.0;
function OnControllerColliderHit (hit : ControllerColliderHit){
var body : Rigidbody = hit.collider.attachedRigidbody;
// 无刚体
if (body == null || body.isKinematic)
return;
// 不推开我们身后的物体
if (hit.moveDirection.y < -0.3)
return;
//从移动方向计算推的方向
// 只推开物体到旁边而不是上下
var pushDir = Vector3 (hit.moveDirection.x, 0, hit.moveDirection.z);
//如果知道角色移动有多快
//然后你就可以用它乘以推动速度
//使用推力
body.velocity = pushDir * pushPower;
}
继承的成员
继承的变量
attachedRigidbody 该碰撞器所附加的刚体。
isTrigger 该碰撞器是一个触发器?
material 该碰撞器使用的材质。
sharedMaterial 该碰撞器的共享物体材质。
bounds 碰撞器在世界空间中包围盘。
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的AudioSourec(如果没有为null)。
guiText 附加到这个GameObject的GUIText(如果没有为null)。
networkView附加到这个GameObject的NetworkView(如果没有为null)。
Collider 附加到这个GameObject的Collider(如果没有为null)。
hingeJoint附加到这个GameObject的HingeJoint(如果没有为null)。
particleEmitter 附加到这个GameObject的ParticleEmitter(如果没有为null)。
gameObject这个组件所附加的游戏物体。一个组件总是附加到一个游戏物体。
Tag 这个游戏的标签。
Name 对象的名称。
hideFlags 该物体是否被隐藏,保存在场景中或被用户修改?
继承的函数
ClosestPointOnBounds 附加碰撞器到包围盒最近的点。
Raycast 投射一个Ray,它忽略所有的碰撞器除了这个。
GetComponet 返回type类型的组件,如果游戏物体上附加一个,如果没有返回null。
GetComponentInchildren 返回type类型的组件,这个组件位于GameObject或者任何它的子物体上,使用深度优先搜索。
GetComponentsInchildren 返回所有type类型的组件,这些组件位于GameObject或者任何它的子物体上。
GetComponets返回Gameobject所有type类型的组件。
CompareTag 这游戏物体被标签为tag?
SendMessageUpwards 在这游戏物体的每个MonoBehaviour和该行为的组先上调用名为methodName方法。
SendMessage 在这游戏物体的每个MonoBehaviour上调用名为
methodName方法。
BoradcastMessage 在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
GetInstanceID 返回该物体的实例id。
继承的消息传递
OnTriggerEnter 当这个Collider other进入trigger进OnTriggerEnter被调用。
OnTriggerExit 当这个Collider other停止触碰trigger时OnTriggerExit被调用。
OnTriggerStay 对于每个Collider other,当它触碰到trigger时,OnTriggerStay会
在每一帧中都被调用。
OnCollisionEnter 当这个碰撞器/刚体开始触碰另一个刚体/碰撞器时
OnCollisionEnter被调用。
OnCollisionExit 当这个碰撞器/刚体停止触碰另一个刚体/碰撞器时OnCollisionExit
被调用.
OnCollisionStay对于每个与刚体/碰撞器相触碰的碰撞器/刚体
OnCollisionStay将在每一帧中被调用。
继承的类函数
Operator bool 这个物体存在吗?
Instatiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,组件或资源。
DestroyImmediate立即销毁物体obj。强烈建议使用Destroy代替
FindObjectsOfType返回所有类型为type的激活物体。
FindObjectOfType返回第一个类型为type的激活物体。
Operator== 比较两个物体是否相同。
Operator!= 比较两个物体是否不相同。
DontDestroyOnLoad 加载新场景时确保物体target不被自动销毁。
Unity3D脚本学习——运行时类的更多相关文章
- 【狼】狼的unity3d脚本学习
记录学习中的问题,时刻更新 unity获取鼠标所在位置 BOOL GetCursorPos( LPPOINT lpPoint); 获取鼠标所在位置,不过原点在左下角 ///////////// ...
- unity3d 脚本学习系列
最近使用unity3d,对其中的脚本部分进一系列总结,算是这一段时间的收获吧.
- spring学习总结——高级装配学习四(运行时:值注入、spring表达式)
前言: 当讨论依赖注入的时候,我们通常所讨论的是将一个bean引用注入到另一个bean的属性或构造器参数中.bean装配的另外一个方面指的是将一个值注入到bean的属性或者构造器参数中.在没有学习使用 ...
- Unity3D脚本:C#计时类脚本
Unity3D脚本:C#计时类脚本 unity3D更多资源教程免费下载,群153442627using UnityEngine;using System.Collections;/// <su ...
- [转]unity3d 脚本参考-技术文档
unity3d 脚本参考-技术文档 核心提示:一.脚本概览这是一个关于Unity内部脚本如何工作的简单概览.Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的.在脚本对象内部不同志的函数被 ...
- Unity3D脚本中文系列教程(十)
http://dong2008hong.blog.163.com/blog/static/4696882720140312627682/?suggestedreading&wumii Unit ...
- Unity3D脚本中文系列教程(八)
◆ static var matrix : Matrix4x4 描述:设置用于渲染所有gizmos的矩阵. 类方法 ◆ Static function DrawCube(center:Vector3, ...
- 乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时
Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2万,超 ...
- Unity3D脚本调用Objective C代码实现游戏内购买
0.开篇吐槽: 一年之内从WP转到iOS,又从iOS转到U3D,真心伤不起. 1.Unity3D脚本调用OC代码的原理: 其实也没啥神秘的,因为OC是和C互通的 ,C#又可以通过DllImport的形 ...
随机推荐
- Vue中 等待DOM或者数据完成 在执行 --this.$nextTick()
虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做.比如一个新闻滚动的列表项.如果在这里需要操作dom, 应该是等待 Vue 完成更新 DO ...
- JS自学总结的零散知识点
1.使用new关键字的时候后面不能接这种变量而是接一个结构constructor 例如由function引导的结构 而不是像如下这样 var car={ lunzi : 4}; 这个只是一个变量而不是 ...
- replace实现替换全部
方法: string.replace(new RegExp(oldString,"gm"),newString)) gm g=global, m=multiLine , 大致上方法 ...
- WPF简单数据绑定
XAML: <!--#region 数据绑定控件--> <DataGrid x:Name="dataGrid" Grid.Column="2" ...
- android开发 RecyclerView 列表布局
创建一个一行的自定义布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...
- ubuntu 16042 安装过程
IDE接口的硬盘被称为hd SCSI和SATA接口的硬盘则被称为sd 第1块硬盘称为sda, 第2块硬盘称为sdb 一块硬盘最多有4个主分区,主分区以外的分区称为扩展分区,硬盘可以没有扩展分区,但是一 ...
- python数组和矩阵使用总结
python数组和矩阵使用总结 1.数组和矩阵常见用法 Python使用NumPy包完成了对N-维数组的快速便捷操作.使用这个包,需要导入numpy. SciPy包以NumPy包为基础,大大的扩展了n ...
- mysql大纲
一.概述 1.1 关系型数据.非关系型数据.半关系型数据 1.2 关系型数据库和非关系型数据库 1.3 发展史 二.MySQL组件和安装 三.数据库语言和主要概念 3.1 数据库语言 DML.DDL. ...
- Java 日期与数字转换
package com.test; import org.apache.commons.lang.StringUtils; import org.junit.Test; import java.tex ...
- 8.Appium的基本使用-2(安装node.js)
node.js 下载地址:https://nodejs.org/en/download/下载 64-bit 下载包下载完成双击安装: