我的问题是我有一个插件,在该插件上,我需要获取一个特定的布尔类型变量。它有2个脚本,这是脚本。
RCC_SETTING:ScriptableObject
// Main Controller Settings
public bool useAutomaticGear = true;
RCC_CARCONTROLLERV3
public bool automaticGear{get{return RCCSettings.useAutomaticGear;}}
现在我创建了自己的脚本
手动变速器
private void Start()
{
RCC_Settings RCCSettings = new RCC_Settings();
RCCSettings.useAutomaticGear = false;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
this.GetComponent<RCC_CarControllerV3>().currentGear += 1;
}
}
它的作用是直到我按下space
才换档。现在的问题是,所有带有RCC_CARCONTROLLER
脚本的游戏对象都会受到影响。我想要类似的操作,以便只有我的播放器才是要进行手动传输的播放器。
答案 0 :(得分:0)
这应该容易完成。首先,像这样在您的RCC_CarControllerV3
中创建此标志布尔值:
public bool isPlayer;
然后,在播放器的检查器上对其进行检查(仅在其上)。
然后,代替这个:
this.GetComponent<RCC_CarControllerV3>().currentGear += 1;
执行以下操作:
var controller = this.GetComponent<RCC_CarControllerV3>();
if(controller.isPlayer)
controller.currentGear += 1;
但是这里很奇怪的事实是您提到对所有gameObjects(具有此Component)都更改了该值。因为GetComponent只会检索您主游戏对象的顶级组件。
为此,您需要使用GameObject.GetComponentInChildren。但是你没有这样做...
请,我建议您编辑问题并添加更多代码。这样,我们可以为您提供更好的帮助。