在下面的代码中,我在第7行收到错误(正如预期的那样):
名称" cube"在当前背景下不存在。
1. if (action == "place") {
2. GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
3. cube.transform.position = new Vector3(0, 0.5F, 0);
4. } else if (action == "rotate") {
5. var x = Convert.ToInt32(message.Args["rotatex"]);
6. var y = Convert.ToInt32(message.Args["rotatey"]);
7. cube.transform.Rotate(x,y,0);
8. }
这仅用于概念验证。我不需要像这样处理多个立方体。那么我应该如何在适当的上下文中实例化它(在if
语句之上)而不用"放置"它在场景中?
答案 0 :(得分:2)
您应首先声明对象,并且仅在值不是null
时才旋转它。像这样的东西
GameObject cube = null;
if (action == "place") {
cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.position = new Vector3(0, 0.5F, 0);
} else if (action == "rotate") {
var x = Convert.ToInt32(message.Args["rotatex"]);
var y = Convert.ToInt32(message.Args["rotatey"]);
if(cube != null)
cube.transform.Rotate(x,y,0);
}
答案 1 :(得分:1)
您没有在'else if'语句中仅声明您的'if'语句中的多维数据集。所以在你的'else if'中它引用了在那种条件下不存在的东西。
您只需使用开关即可。
switch (action){
case 'place' :
//Declare Cube (Including Instantiate)
//Do what you want with Cube
break;
case 'rotate':
//Declare Cube (Including Instantiate)
//Do whatever else
break;
}