试图访问另一个GameObject中的另一个脚本

时间:2013-10-22 12:30:28

标签: unity3d unityscript

我有两个GameObject,一个门和一个触发器。每个GameObject都有一个脚本,触发器有PlayerDoorTrigger.js检测玩家是否进入触发器。门上有门,当点击时,门打开了。

我在将来自PlayerDoorTrigger.js的布尔值从doorMove.js转换为if语句时遇到问题。以下是两个脚本:

doorMove.js

var doorDynamic = false;

var playerTrigger:GameObject;


function Awake () {

}
function Start () {
    playerDoorTrigger.playerOnTrigger = true;
}

function Update () {
    if(Input.GetMouseButton(0)){
        doorDynamic=true;
    }
    if(doorDynamic == true){
        transform.Rotate(Vector3.up * Time.deltaTime*128);
    }
    }

function OnCollisionEnter(doorCol:Collision){
    if(doorCol.gameObject.tag=="Walls"){
        Debug.Log("POP");
        doorDynamic = false;
    }   
}

PlayerDoorTrigger

public var playerOnTrigger = false;

function OnTriggerEnter(trigger:Collider){
    if(trigger.gameObject.tag=="Player"){
        playerOnTrigger=true;
    }
}

function OnTriggerExit(trigger:Collider){
    if(trigger.gameObject.tag=="Player"){
        playerOnTrigger=false;
    }
}

尝试使用GetComponent但没有运气的脚本参考。

请帮我解决这个问题,谢谢。

1 个答案:

答案 0 :(得分:1)

您需要先获取PlayerDoorTrigger组件才能使用它。以下是假设PlayerDoorTriggerdoorMove附加到同一游戏对象的快速示例:

var playerDoorTrigger = GetComponent("PlayerDoorTrigger") as PlayerDoorTrigger;

if (playerDoorTrigger.playerOnTrigger) {
    Debug.Log("Huzzah, player trigger true.");
}

我假设你的两个脚本都是UnityScript(javascript)。如果没有,您需要find other ways让Unity识别脚本类,这样您就可以分配该类型的变量。