Unity中C# Instantiate调用LocateX/LocateY报CS0165错误求助
解决Unity C#中CS0165(使用未赋值的局部变量)错误
错误代码CS0165表示使用了未赋值的局部变量。在原始代码中,LocateX和LocateY存在部分代码路径未被赋值就传入Instantiate方法的情况,因此编译器触发了该错误。C#要求局部变量必须明确赋值后才能被访问,否则会抛出此类编译错误。
修复后的代码通过在变量声明时直接赋予初始值(float LocateX = 0; float LocateY = 0;),确保无论后续分支逻辑如何,变量都有明确的初始值,从而解决了编译器报错问题:
using System.Collections; using System.Collections.Generic; using UnityEditor.Experimental.GraphView; using UnityEngine; public class OXScript : MonoBehaviour { private int clickNumber; public GameObject o; public int spotNumber; // Start is called before the first frame update void Start() { clickNumber = 0; } // Update is called once per frame void Update() { } public void SpawnO() { // 1, 2, 3, y = 3 // 4, 5, 6, y = 0 // 7, 8, 9, y = -3 // x=-3 x=0 x=3 float LocateX = 0; float LocateY = 0; int ix = 0; for(int i=1; i<10; i++) { if (clickNumber == 0 && spotNumber == i) { // y if(1 <= i && i <= 3 ) { LocateY = 3; } else if(4 <= i && i <= 6) { LocateY = 0; } else if (7 <= i && i <= 9) { LocateY = -3; } //x if (ix == (i - 1) % 3) { LocateX = -3; } else if (ix + 1 == (i - 1) % 3) { LocateX = 0; } else if (ix + 2 == (i - 1) % 3) { LocateX = 3; } Instantiate(o, new Vector3(LocateX, LocateY, 0), transform.rotation); spotNumber ++; clickNumber ++; } } } }
目前问题已解决,我清楚自己的代码还有不规范的地方,感谢各位对新手的帮助!
内容的提问来源于stack exchange,提问作者shim jongbeom
相关产品推荐
相关产品推荐

