【问题标题】:How can I fix Array index out of range Unity [duplicate]如何修复数组索引超出 Unity 范围 [重复]
【发布时间】:2015-03-06 16:18:48
【问题描述】:

Unity 中的数组索引超出范围,需要帮助!

void OnCollisionEnter2D(Collision2D col) {
    rigidbody2D.velocity = new Vector2(0, 0);
    transform.rotation = Quaternion.Euler (0, 0, headDownAngle);
    if(!isDied) {
        audios[1].Play();
        animator.SetTrigger("dead");
        iTween.ShakePosition(Camera.main.gameObject, new Vector3(0.3f, 0.3f, 0), 0.5f);
    }       
    isDied = true;
    isPlaying = false;

【问题讨论】:

  • 当然是开头的“void”而不是“oid”:)

标签: c# arrays unity3d


【解决方案1】:

我没有看到正在使用的任何其他数组(除非您的其他函数之一使用数组)所以似乎这条线导致了错误:

 audios[1].Play();

记住数组是从零开始的,所以数组中的第一个位置实际上是 0,所以如果你想获取第一个元素:

audios[0].Play().

如果您尝试获取第二个元素,请确保音频有 2 个元素。

【讨论】:

    【解决方案2】:

    数组索引超出范围是当您尝试使用不存在的数组的一部分时导致的错误 例子

    float numOfTests = 2;
    AudioSource[numOfTests] tests;
    
    void Start()
    {
        tests[3].play();
    } 
    

    由于数组中只有 2 个音频源,我们可以访问第三个,因为它不存在。

    我希望这会有所帮助。我曾经使用统一编码,后来转向 c++ 并编写自定义引擎,所以如果我的回答没有帮助,那可能是因为我已经一年没有使用统一了。

    【讨论】:

    • 如果您需要更多帮助,请告诉我,如果您将来需要任何东西,请询问我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    相关资源
    最近更新 更多