Unity常用代码

//创建一个名为"Player"的游戏物体
//并给他添加刚体和立方体碰撞器.
player=new GameObject("Player");
player.AddComponent("Rigidbody");
player.AddComponent("BoxCollider");

//创建一个没有名称的游戏物体
//并给他添加刚体和立方体碰撞器.Transform总是被添加到该游戏物体.
player=new GameObject();
player.AddComponent("Rigidbody");
player.AddComponent("BoxCollider");
//添加名为FoobarScript的脚本到游戏物体
gameObject.AddComponent("FoobarScript");
//添加球形碰撞器到游戏物体
gameObject.AddComponent("FoobarCollider");
注意,没有RemoveComponent(),来移除组件,使用Object.Destroy.



//不激活该游戏物体.
gameObject.active=false;


//附加到这个游戏物体的动画组件(只读)(如果没有为null)
var other: GameObject;
other.animation.Play();

//附加到这个游戏物体的声音组件(只读)(如果没有为null)
var other: GameObject;
other.audio.Play();


//附加到这个游戏物体的相机(只读)(如果没有为null)
var other: GameObject;
other.camera.fieldOfView=45;

//附加到这个游戏物体的碰撞器(只读)(如果没有为null)
var other: GameObject;
other.collider.material.dynamicFriction=1;


//附加到这个游戏物体的恒定力(只读)(如果没有为null)
var other: GameObject;
other.constantForce.relativeForce=Vector3(0,0,1);

//附加到这个游戏物体的GUIText,GUITexture(只读)(如果没有为null)
var other: GameObject;
other.guiText.text="HelloWorld";


//附加到这个游戏物体的HingeJoint(只读)(如果没有为null)
var other: GameObject;
other.hingeJoint Spring.targetPosition=70;

//游戏物体所在的层,一个层在[0...32]之间.
Layer可以用来选择性的渲染或忽略投射.
//设置游戏物体到忽略投射物体的层上
gameObject.layer=2;


//附加到这个游戏物体的光影(只读)(如果没有为null)
var other: GameObject;
other.light.range=10;

//附加到这个游戏物体的网络视(只读)(如果没有为null)
var other: GameObject;
other.networkView.RPC("MyFunction",RPCMode.All,"someValue");


//附加到这个游戏物体的粒子发射器(只读)(如果没有为null)
var other: GameObject;
other.particleEmitter.emite=true;

//附加到这个游戏物体的渲染器(只读)(如果没有为null)
var other: GameObject;
other.renderer.material.color=Color.green;


//附加到这个游戏物体的刚体(只读)(如果没有为null)
var other: GameObject;
other.rigidbody.AddForce(1,1,1);

//标签可以用来标识一个游戏物体。标签在使用前必须在标签管理器中定义。
gameObject.tag="Player";


//附加到这物体的变换. (如果没有为null)
var other: GameObject;
other.transform.Translate(1,1,1);



//在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。
//通过使用零参数,接收方法可以选择忽略parameter。如果options被设置为
SendMessageOptions.RequireReceiver,那么如果这个消息没有被任何组件接收时将打印一个
错误消息。
///使用值5调用函数ApplyDamage
gameObject.BroadcastMessage("ApplyDamage",5);
//所有附加到该游戏物体和其子物体上脚本中的
//ApplyDamage函数都将调用
function ApplyDamage(damage)

{
     print(damage)
}

 

 

//立即死亡触发器
//销毁任何进入到触发器的碰撞器,这些碰撞器被标记为Player.
function OnTriggerEnter(other: Collider)
{
    if(other.gameObject.CompareTag("Player"))
    {
         Destroy(other.gameObject);
     }
}

 


如果游戏物体有type类型的组件就返回它,否则返回null. 你可以使用这个函数
访问内置的组件或脚本.
GetComponent是防卫其他组件的主要方法。对于Javascript脚本的类型总是脚本显示
在工程视图中的名称。例如:
function Start()
{
     var curTransform: Transform;
     curTransform=gameObject.GetComponent(Transform);
     //这等同于
     curTransform=gameObject.transform;
}
function Update()

{
     //为访问附加在同一游戏物体上
     //其他脚本内的公用变量和函数
     //(ScriptName为Javascript文件名)
     var other: ScriptName=gameObject.GetComponent(ScriptName);
     //调用该脚本中的DoSomething函数
     other DoSomething();
     //设置其他脚本实例中的另一个变量
     other.someVariable=5;
}

 

//返回type类型的组件,这个组件位于这个游戏物体或任何它的子物体上,使用深度优先搜索。
//只有激活的组件被返回。
var script: ScriptName=gameObject.GetComponentInChildren(ScriptName);
script.DoSomething();    

 

 

//返回该游戏物体上所有type类型的组件。
//在这个游戏物体和所有它的子物体上
//的HingeJoints上禁用弹簧
var hingeJoints=gameObject.GetComponents(HingeJoint);
for(var joint: HingeJoint in hingeJoints)

{
     joint.useSpring=false;
}



//返回所有type类型的组件,这些组件位于该游戏物体或任何它的子物体上。
//只有激活的组件被返回。
//在这个游戏物体和所有它的子物体上
//的所有HingeJoints上禁用弹簧
var hingeJoints=gameObject.GetComponentsInChildren(HingeJoint);
for(var joint: HingeJoint in hingeJoints)

{
     joint.useSpring=false;
}

 

//在一个特定的时间采样动画,用于任何动画目的。
//出于性能考虑建议使用Animation接口,这将在给定的time采用animation,任何被动化的组件属性都将被这个采样值替换,多数时候你会使用Animation.Play. SampleAnimation
//用于当你需要以无序方式或给予一些特殊的输入在帧之间跳跃时使用。参见:Aniamtion
//通过采样每一帧或动画剪辑
var clip.AniamtionClip
function Update()
{
    gameObject.sampleAnimation(clip, clip.length-Time.time);
}


//设置这个物体和所以子游戏物体的机会状态。
gameObject.SetActiveRecursion(true);

  

//用几何的网格渲染器和适当的碰撞器创建一个游戏物体。
///在场景中创建一个平面,球体和立方体
function Start()
{
     var plane:GameObject= GameObject.CreatePrimitive(PrimitiveType.Plane);

     var cube=GameObject.CreatePrimitive(PrimitiveType.Cube);
     cube.transform.position=Vector3(0,0.5,0);

      var sphere=GameObject.CreatePrimitive(PrimitiveType.Sphere);
     sphere.transform.position=Vector3(0,1.5,0);

     var capsule=GameObject.CreatePrimitive(PrimitiveType.Capsule);
     capsule.transform.position=Vector3(2,1,0);

      var cylinder=GameObject.CreatePrimitive(PrimitiveType.Cylinder);
     cylinder.transform.position=Vector3(-2,1,0);
}

  

static function Find(name: string): GameObject

描述:依据name查找物体并返回它.
如果没有物体具有名称name返回null. 如果name包含'/'字符它将像一个路径名一样穿
越层次,这个函数只返回激活的游戏物体。
出于性能考虑建议不要在每帧中都是有该函数,而是在开始时调用并在成员变量中缓存结果
或者用GameObject.FindWithTag.
//这返回场景中名为Hand的游戏物体.
hand=GameObject.Find("Hand");
//这将返回名为Hand的游戏物体.
//在层次试图中Hand也许没有父!
hand=GameObject.Find("/Hand");
//这将返回名为Hand的游戏物体.
//它是Arm>Monster的子.
//在层次试图中Monster也许没有父!
hand=GameObject.Find("/Monster/Arm/Hand");
//这将返回名为Hand的游戏物体.
//它是Arm>Monster的子.
//Monster有父.
hand=GameObject.Find("/Monster/Arm/Hand");
这个函数最常用与在加载时自动链接引用到其他物体,例如,在MonoBehaviour.Awake
或MonoBehaviour.Start内部. 处于性能考虑你不应该在每帧中调用这个函数,例如
MonoBehaviour.Update内. 一个通用的模式是在MonoBehaviour.Start内将一个游戏物体赋给
一个变量. 并在MonoBehaviour.Update中使用这个变量.
//在Start中找到Hand并在每帧中选择它
private var hand: GameObject;
function Start()
 
{
     hand=GameObject.Find("/Monster/Arm/Hand");
}
function Update()
{
     hand.transform.Rotate(0,100*Time.deltaTime,0);
}

 

function FindGameObjectsWithTag(tag: string): GameObject[]

描述:返回标记为tag的激活物体列表,如果没有发现返回null.
标签在使用前必须在标签管理中定义。
//在所有标记为"Respawn"的物体位置处
//实例化respawnPrefab
 
var respawnPrefab: GameObject;
var respawns=GameObject.FindGameObjectsWithTag("Respawn");
for(var respawn in respawns)
Instantiate(respawnPrefab, respawn.position, respawn.rotation);
//打印最接近的敌人的名称
print(FindClosestEnemy().name);
//找到最近的敌人的名称
function FindClosestEnemy(): GameObject
{
     //找到所以标记为Enemy的游戏物体
     var gos: GameObject[]
     gos=GameObject.FindGameObjectsWithTag("Enemy");
     var closest: GameObject;
     var distance=Mathf.Infinity;
     var position=transform.position;
     //遍历它们找到最近的一个
     for(var go: GameObject in gos)
     {
           var diff=(go.transform.position-position);
           var curDistance=diff.sqrMagnitude;
           if(curDistance

你可能感兴趣的:(Unity,3D)