简介
最近开始学习unity3D建模,在Unity 3D脚本应用实例演示(三个实例)上学习了一个案例设计,C# 程序如下:
using UnityEngine;
using System.Collections;
public class MyScript:MonoBehaviour
{
public GameObject myCube;
public int transSpeed=100;
public float rotaSpeed=10.5f;
public float scale=3;
void OnGUI(){
if(GUILayout.Button("移动立方体")){
myCube.transform.Translate(Vector3.forward*transSpeed*Time.deltaTime, Space.World);
}
if(GUILayout.Button("旋转立方体")){
myCube.transform.Rotate(Vector3.up*rotaSpeed, Space.World);
}
if(GUILayout.Button("缩放立方体")){
myCube.transform.localScale=new Vector3(scale, scale, scale);
}
}
}
该脚本中声明了4个变量,且都是public修饰。
public 修饰的变量可以作为属性出现在组件下。 比如说,C# 中出现的四个变量:myCube,transSpeed,rotaSpeed,scale;都在Inspector中出现了。

问题
点击运行,会在Game中显示游戏窗口及GUI交互界面。但是点击移动立方体或者任何一个选项时,console都都提示出错。 
报错:UnassignedReferenceException: The variable myCube of MyScript has not been assigned. You probably need to assign the myCube variable of the MyScript script in the inspector. MyScript.OnGUI ()
解决办法
从网上搜索了报错的意思:尚未分配MyScript的变量myCube。您可能需要在检查器中为MyScript脚本分配myCube变量。
介个,作为unity小白,一开始搜索了很多解决办法,但是都没有成功的。
然后我就重新理解了一下字面意思,意思是,在Inspector中没有给mycube分配对象。
然后我将My Cube变量与Trans Speed这个public变量做对比,发现确实是,Trans Speed变量有赋值100,但是My Cube并没有定义对象。所以只需要在My Cube选项的右侧选择对应的目标即可。
操作为:
- 点击
My Cube右侧这个按键
 2. 选项对象
 然后My Script脚本就变成了这样:
 好了,再点击运行→移动立方体,就能正常运行了。
|