[英]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.