繁体   English   中英

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

[英]Create a new instance and override the class

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

这应该很容易做到。 首先,如下所示在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的顶级组件。

为此,您需要使用GameObject.GetComponentInChildren 但是你没有这样做...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM