您的位置:首页 > 移动开发 > Unity3D

Unity3D 脚本常用方法快速参考

2014-03-26 12:13 246 查看
Unity3D脚本参考

Object类

Unity所涉及的所有物体的基类。任何从Object继承的公有变量将作为一个目标显示在监视面板中,允许你从GUI中设置。

变量

◆ var hideFlags : HideFlags 描述:该物体是否被隐藏,保存在场景中或被用户修改。

◆ var name : string

描述:对象的名称。组件与游戏物体和所有附加的组件共享相同名称。

//改变物体的名称为Hello

name = "Hello";

函数

◆ function GetInstanceID () : int 描述:返回该物体的实例id。一个物体的实例ID总是唯一。

描述:返回该物体的实例id。

一个物体的实例id总是唯一的。

print(GetInstanceID());

类方法

◆ static function Destroy (obj : Object, t : float = 0.0F) : void

描述:移除一个游戏物体,组件或资源。物体obj将被小火或者t秒后被销毁。如果obj是一个Component它将被从GameObject中移除。如果obj是一个GameObject它将销毁这个GameObject,以及它的组件和所子对象。实际的销毁总是推迟到下个Update来临时,但总在渲染前完成。//销毁这个游戏物体

Destroy (gameObject);

//从物体上移除该脚本

Destroy (this);

//从游戏物体上移除刚体组件

Destroy (rigidbody);

//加载该游戏物体后5秒删除

Destroy (gameObject, 5);

//当玩家按下Ctrl时移除名为FoooScript的脚本

function Update () {

if (Input.GetButton ("Fire1") && GetComponent (FooScript))

Destroy (GetComponent (FooScript));

}◆ static function DestroyImmediate (obj : Object, allowDestroyingAssets : bool = false) : void

描述:立即销毁物体。强烈建议使用Destroy代替它。该函数应该只在编写编辑器代码时使用,因为延迟的销毁将不会再编辑器模式调用。游戏代码中建议使用Destroy。Destroy总是延迟的(但是在同一帧执行)。小心使用该函数,因为它能永久的销毁资源。

◆ static function DontDestroyOnLoad (target : Object) : void

描述:加载新场景时确保物体target不被自动销毁。当加载一个新的关卡时,场景中的所有物体都会被销毁,然后心关卡中的物体将被加载。为了在关卡加载的时候保持物体在上面调用DontDestroyOnLoad。如果物体是一个组件或游戏物体,那么它的整个变换层次将不会被销毁。//保证该游戏物体及其变化子物体在载入新场景时不会被销毁。

function Awake () {

DontDestroyOnLoad (this);

}◆ static function FindObjectOfType (type : Type) : Object

描述:返回第一个类型为Type的已激活加载的物体。参见Object.FindObjectsOfType 。

◆ static function FindObjectsOfType (type : Type) : Object[]

描述:返回所有类型为Type的已激活加载的物体。

参见Object.FindObjectsOfType 。

它将返回任何资源(网格、纹理、预设等)或已激活加载的物体。//当点击该物体,它将禁用场景中所有铰链中的弹簧。

function OnMouseDown () {

hinges = FindObjectsOfType (HingeJoint);

for (var hinge : HingeJoint in hinges) {

hinge.useSpring = false;

}

} c#版public class Something : MonoBehaviour{

void OnMouseDown(){

HingeJoint[] hinges = FindObjectsOfType<HingeJoint>();

for (HingeJoint hinge in hinges) {

hinge.useSpring = false;

}

}

}◆ static function Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object

描述:克隆original物体并返回该克隆。防御position兵设置旋转为rotation,然后返回该克隆。本职上与cmd-d相同,并移动到给定位置。如果一个游戏物体、组件或脚本实例被传入,Instantiate将克隆整个游戏物体层次,所有的子对象也被克隆。所有游戏物体被激活。参加:预设实例化的深入讨论。//实例化预设的10个拷贝,间隔为2单位。

var prefab : Transform;

for (var i=0;i<10;i++) {

Instantiate (prefab, Vector3(i * 2.0, 0, 0), Quaternion.identity);

}Instantiate更多常用于实例化投射物、AI敌人,粒子爆炸或b破损的物体。//实例化一个刚体,然后设置速度。

var projectile : Rigidbody;

function Update () {

//按下ctrl时,发射一个物体

if (Input.GetButtonDown("Fire1")) {

//以该变化位置与旋转实例化投射物

var clone : Rigidbody;

clone = Instantiate(projectile, transform.position, transform.rotation);

//沿当前物体Z轴,给克隆体一个初始速度

clone.velocity = transform.TransformDirection (Vector3.forward * 10);

}

}实例化也能直接克隆脚本实例。整个游戏物体层级将被克隆,并且克隆脚本的实例将被返回。//初始化一个附加了Missile脚本的预设

var projectile : Missile;

function Update () {

//按下ctrl时,发射一个物体

if (Input.GetButtonDown("Fire1")) {

//以该变化位置与传转实例化投射物

var clone : Missile;

clone = Instantiate(projectile, transform.position, transform.rotation);

//设置火箭超市销毁为5秒

clone.timeoutDestructor = 5;

}

}克隆一个物体之后可以使用GetComponet来设置附加到克隆物体上的特定组件的属性。

◆ static function Instantiate (original : Object) : Object

描述:克隆original物体并返回该克隆。这个函数保留克隆物体的位置与赋值命令相同(cmd-d)。//当任何刚体进入这个触发器时实例化预设。

//它保留预设的原始位置与旋转。

var prefab : Transform;

function OnTriggerEnter () {

Instantiate (prefab);

}◆ static operator != (x : Object, y : Object) : bool

描述:比较两个物体是否不同。var target : Transform;

function Update (){

//如果target不同于我们的变换。

if (target != transform){

print("Another object");

}

}◆ static operator == (x : Object, y : Object) : bool

描述:比较两个物体是否相同。var target : Collider;

function OnTriggerEnter (trigger : Collider){

if (trigger == target)

print("We hit the target trigger");

}

var target : Transform;

function Update (){

//该物体已被销毁。

if (target == null)

return;

}◆ static implicit function bool (exists : Object) : bool

描述:这个物体是否存在?

if(rigidbody)

等同于

if(rigidbody != null)

AnimationClip

类,继承自Object。

存贮基于动画的关键帧。

AnimationClip被Animation使用来播放动画。

变量

◆ var frameRate : float

描述:关键帧被残阳的帧率。这个与用来制作动画/模型的动画程序相同。

//打印动画剪辑的帧率到控制台。

print(animation["walk"].clip.frameRate);

◆ var length : float

描述:动画播放的描述。

animation.Play(animation.clip);

//等待动画完成。

yield WaitForSeconds (animation.clip.length);

◆ var wrapMode : WrapMode

描述:在动画状态中设定默认的卷模式。

构造函数

◆ static function AnimationClip () : AnimationClip

描述:创建一个新的动画剪辑。

函数

◆ function AddEvent (evt : AnimationEvent) : void

描述:创建一个新的动画剪辑。这将添加这个时间直到退出播放模式或玩家退出。如果你想从编辑器添加一个固定的剪辑到AnimationEvent,使用UnityEditorAnimationUtility.SetAnimationEvents。

◆ function ClearCurves () : void

描述:从剪辑中清理所有曲线。

◆ function SetCurve (relativePath : string, type : Type, propertyName : string, curve : AnimationCurve) : void

参数

relativePath 应用这个曲线的游戏物体的路径。relativePath被格式化为一个路径名。入:“root/spine/leftArm”如果relativePath为空,表示该动画剪辑所附加的游戏物体。

type 被进行动画处理的组件的类类型。

propertyName 被动画处理的属性的名称或路径。

curve 动画曲线。

描述:给动画指定一个特定的曲线属性。如果曲线为null该曲线将被移除。如果曲线为null该曲线将被移除。如果曲线属性已经存在,则会被替换。通常的名称是:“localPostion.x”,“localPostion.y”,“localPostion.z”,“localRotation.x”,“localRotation.y”,“localRotation.z”,“localRotation.w”,“localScale.x”,“localScale.y”,“localScale.z”。出于性能考虑Transform的位置、旋转和缩放只能被所谓一个动画属性。//对x坐标的位置进行动画处理

function Start (){

//创建曲线

var curve = AnimationCurve.Linear(0, 1, 2, 3);

//用曲线创建剪辑

var clip = new AnimationClip();

clip.SetCurve("", Transform, "localPosition.x", curve);

//添加并播放剪辑

animation.AddClip(clip, "test");

animation.Play("test");

}@script RequireComponent(Animation)

Material属性可以使用shader到处的名称制作动画属性。通常的属性名称是:“_MainTex”,“_BumpMap”,“_LightMap”,“_Color”,“_SpecColor”,“_Emmission”。

Float属性“PropertyName”

Vector4属性“PropertyName.x”“PropertyName.x” “PropertyName.x” “PropertyName.x” Color属性“PropertyName.r”“PropertyName.g”“PropertyName.b”“PropertyName.a”

UV旋转属性“PropertyName.rotation”;UB便宜和缩放“PropertyName.offset.x”“PropertyName.offset.y”“PropertyName.scale.x”“PropertyName.scale.y”

对于在同一个Renderer上的多个索引材质,你可以像这样加前缀“._MainTex.offset.y”。//对alpha值和主要材质地平线补偿进行动画处理

function Start () {

var clip = new AnimationClip ();

clip.SetCurve ("", typeof(Material), "_Color.a",AnimationCurve (Keyframe(0, 0, 0, 0), Keyframe(1, 1, 0, 0)));

clip.SetCurve ("", typeof(Material), "_MainTex.offset.x",AnimationCurve.Linear(0, 1, 2, 3));

animation.AddClip (clip, clip.name);

animation.Play(clip.name);

}@script RequireComponent(Animation)

继承的成员

继承的变量

name 对象名称

hideFlags 该物体是否被隐藏,保存在场景中或被用户修改

继承的函数

GetInstanceID 返回该物体的实例id

继承的类函数

operator bool 这个物体存在吗?

Instantiate 克隆original物体并返回这个克隆。

Destroy 移除一个游戏物体、组件或资源。

DestroyImmediate 立即销毁物体obj。强烈建议使用Destroy代理。

FindObjectsOfType 返回所有类型为type的激活物体。

FindObjectsOfType 返回第一个类型为type的激活物体。

operator== 比较两个物体是否相同。

operator!= 比较两个物体是否不同。

DontDestroyOnLoad 加载新场景时确保目标物体不被自动销毁。

AssetBundle

类,继承自Object。AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们。AssetBundles通过BuildPipeline.BuildAssetBundle创建。参见:WWW.assetBundle ,Loading Resources at Runtime ,BuildPipeline.BuildPlayerfunction
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 加载新场景时确保目标物体不被自动销毁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: