统一控制台声称变量temp已声明但从未使用过

时间:2016-05-26 22:54:11

标签: c# unity3d

using UnityEngine;
using System.Collections;

public class GameBoardScript : MonoBehaviour {

    public int m_size;
    public GameObject m_PuzzlePiece;

    void Start() {
        GameObject temp;

        for (int i = 0; i < m_size; i++) {

            for (int j = 0; j<m_size; j++) {
                temp = (GameObject)Instantiate(m_PuzzlePiece, new Vector2(i*400/m_size, j*400/m_size), Quaternion.identity);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您收到此警告的原因是您分配变量。但是你没有使用 temp的变量。在变量减速后对变量做任何事情,警告就会消失!例如:

for (int i = 0; i < m_size; i++)
{
    for (int j = 0; j<m_size; j++) 
    {
        temp = (GameObject)Instantiate(m_PuzzlePiece, new Vector2(i*400/m_size, j*400/m_size), Quaternion.identity);
        temp.SetActive(false); // this is an arbitrary use of temp. don't actually do this
    }
}

Joe Blow是正确的,你应该只调用instantiate而不指定它返回一个变量,如果你不打算事后对实例化的GameObject做任何事情。但是,只是声明内部for循环的局部变量仍将删除警告,如果仍然无法使用它。

请注意编译器无法确定m_size变量可能为0并且可能无法到达内部for循环。发生警告是因为行

temp = (GameObject)Instantiate(m_PuzzlePiece, new Vector2(i*400/m_size, j*400/m_size), Quaternion.identity);

分配,而不是变量temp使用。您可以根据需要多次分配它,您仍然会收到相同的警告。您需要使用,否则将GameObject中返回的Instantiate分配给变量。