我试图让玩家找到钥匙后就打开门 当前“ hasKey”值正在管理玩家是否具有正确或错误的密钥。我现在需要知道如何在另一个脚本中使用此“ hasKey”布尔值;我已经尝试了几个小时,却无处可寻,所以我将代码发布在下面,也许有人知道发生了什么事,谢谢!!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Detection : MonoBehaviour {
public GameObject objectToEnable;
public static bool Enabled = false;
public bool hasKey = false;
public DoorOpener _DoorOpener;
private void Update()
{
Debug.Log(hasKey);
if (Enabled)
{
objectToEnable.SetActive(true);
}
}
void OnMouseEnter()
{
Debug.Log("Enter");
}
void OnMouseExit()
{
Debug.Log("Exit");
}
void OnMouseUp()
{
Enabled = true;
hasKey = true;
Debug.Log("Pressed");
}
}
public class DoorOpener : MonoBehaviour
{
Animator animator;
bool JailDoorOpen;
public Detection _Detection;
void Start()
{
JailDoorOpen = false;
animator = GetComponent<Animator>();
}
void OnTriggerEnter(Collider JailDoorO)
{
if ((JailDoorO.gameObject.tag == "Player") && (_Detection.hasKey == true))
{
Debug.Log("Open Door");
JailDoorOpen = true;
jDoors("Open");
}
}
void jDoors (string direction)
{
animator.SetTrigger(direction);
}
}
enter code here
答案 0 :(得分:0)
如果这是本地多人游戏,则可以将布尔值存储在door对象上。您也可以将其存储在KeyManager
中,并通过静态变量进行访问。
如果这是网络多人游戏,则必须将变量存储在某个位置的管理器中,并在该布尔状态改变时更新每个客户端。
答案 1 :(得分:0)
在第二个脚本中,您已经声明:
public Detection _Detection;
但是您还没有说_Detection
被分配了什么。因此,它只是检测脚本的空白实例。您需要引用附加到要查找的特定对象的脚本。
例如,如果Detection和DoorOpener都在同一个游戏对象上,那么您将要做。
_Detection = gameObject.getComponent<Detection>();
否则您可以做类似...
_Detection = GameObject.FindWithTag('TagOfObjWithDetScript').getComponent<Detection>();
现在DoorOpener中的haskey
的值与您正在使用的检测脚本的特定实例中的haskey
的值相匹配。