2013-09-25 55 views
0

那Unity3D js脚本错误,在PC上它做工精细的一员,但如果我尝试切换平台到Android ...BCE0019:“碰撞”不是“对象”

Trigger_Script:

#pragma strict 
var P : GameObject; 
var P_script; 
var P_objname = "Player"; 
var P_script_name = "Player_script"; 

function Start() { 

P = GameObject.Find(P_objname); 
P_script = P.GetComponent(P_script_name); 
} 

function OnTriggerEnter(collider : Collider) { 
if(collider.gameObject.name == P_objname) P_script.collision = true; 
} 

和Player_Script:

#pragma strict 
var collision : boolean; 
var respawn_position : Vector3; 
var respawn_time : int = 1; 
var respawn_objname = "Respawn"; 

function Update() { 
if(collision) { 
Respawn(); 
} 
    } 

function Respawn() { 
renderer.enabled = false; 
respawn_position = GameObject.Find(respawn_objname).transform.position; 
gameObject.transform.position = respawn_position; 
yield WaitForSeconds(respawn_time); 
renderer.enabled = true; 
collision = false; 
} 

帮我PLZ:O型

回答

0

如果你不知道类型提前,您应该使用SendMessage或者您想要使用polymorphism

如果你知道脚本类型的提前:

​​

如果知道脚本类型的提前:

//(Trigger script) 
#pragma strict 
var P_script : YourScript; 


function Start() { 
    var tmp = GameObject.Find(P_objname); 
    tmp.SendMessage("SetCollision",true); 

    P_script = tmp.GetComponent("YourScript"); 
    Debug.Log("Current collision: " + P_script.collision); 
} 

//(Player script) 
//... all your other code plus this: 
function SetCollision(var b : boolean){ 
    collision = b; 
} 
+0

我有测试这一点,但现在: NullReferenceException:未将对象引用设置为对象的实例 Trigger_script.Start()(At Assets/Script/Trigger_script.js:8) #pragma strict var P_script:Player_script; var P_objname =“Player”; (){ function Start P_script = tmp.GetComponent(“Player_script”); P_script.collision = true; Debug.Log(“Current collision:”+ P_script.collision); } –

+0

@RaffaeleElShaarawyIabichino'tmp.GetComponent(“Player_script”);'必须*完全匹配您的脚本的名称。尝试使用'tmp.GetComponent(“Player_Script”);'(注意大写'S') – Jerdak

+0

好吧我尝试,并:NullReferenceException Player_script + $ Respawn $ 34 + $。MoveNext()(在Assets/Script/Player_script.js: 23) UnityEngine.MonoBehaviour:StartCoroutine_Auto(IEnumerator) Player_script:Update()(在Assets/Script/Player_script.js:13),另一个错误:NullReferenceException:对象引用未设置为对象的实例 Trigger_script.Start ()(在Assets/Script/Trigger_script.js:9)。 LoL现在?帮我看看.... –