创建一个新实例并覆盖该类

时间:2019-02-15 15:20:00

标签: c# unity3d

我的问题是我有一个插件,在该插件上,我需要获取一个特定的布尔类型变量。它有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脚本的游戏对象都会受到影响。我想要类似的操作,以便只有我的播放器才是要进行手动传输的播放器。

1 个答案:

答案 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。但是你没有这样做...

请,我建议您编辑问题并添加更多代码。这样,我们可以为您提供更好的帮助。