首页 > 解决方案 > 在不同对象上使用相同脚本时字符串不同的值

问题描述

我在这里有点困惑,需要帮助。我制作了一个脚本,它使用其他脚本来计算燃料和硝基消耗量。一切都在检查员中有效。但是,当涉及到游戏 UI 中 Text 中的字符串值时,它只能为 1 辆车字符串。我知道问题是因为我在多个对象上使用相同的脚本,所以它不能以这种方式工作。我只是很困惑我应该怎么做。

现在,我在更新中把它串起来:

fuelAmountText.text = string.Format ("{0}", FuelTankCapacity.ToString("F2"));
nitroAmounText.text = string.Format ("{0}", nitroAmount.ToString("F1"));

如何使其仅适用于特定车辆而不是相互反应?如果我让任何人感到困惑,这是一个完整的脚本:

public class CarFuel : MonoBehaviour {

    // car nitro and fuel indicators

    public Text fuelAmountText;

    public float nitroAmount;
    public Text nitroAmounText;

    // ref to car controller
    private RCC_CarControllerV3 carController;

    // dashboard canvas gameobject

    public GameObject customDash;

    public GameObject player;

    // engine type ------- wip

    //public EngineType engineTypeChoice = EngineType.v6;
    //public enum EngineType{i4, v6, v8, v12}

    // fuel tank capacity
    public float FuelTankCapacity;

    // cylinder amount of a vehicle
    public float cylAmt;

    void Awake(){

        carController = GetComponent<RCC_CarControllerV3>();

    }


    // Update is called once per frame
    void Update () {

        fuelAmountText.text = string.Format ("{0}", FuelTankCapacity.ToString("F2"));
        nitroAmounText.text = string.Format ("{0}", nitroAmount.ToString("F1"));


        nitroAmount = carController.NoS;

        // calculate fuel consumption

        if (carController.engineRunning == true) {

            FuelTankCapacity -= carController.rawEngineRPM * 0.00000001f + cylAmt * 0.0000015f;

        }

        // enable dash if car is being used

        if (carController.canControl == true) {

            customDash.SetActive (true);

        } else {

            customDash.SetActive (false);

        }

    }
}

提前致谢!

标签: c#unity3d

解决方案


在玩了更多并调试它之后,我发现了问题的原因......

它是

if (carController.canControl == true) 

我所做的是检查 Player GameObject 是否处于活动状态,以显示自定义破折号。它奏效了。呸。不敢相信我在这上面浪费了这么多时间。


推荐阅读