Unity 3D | 报错:UnassignedReferenceException: The variable “***” of “***” has not been assigned.
简介
最近开始学习unity3D建模,在Unity 3D脚本应用实例演示(三个实例)上学习了一个案例设计,C# 程序如下:
using UnityEngine;
using System.Collections;
public class MyScript:MonoBehaviour
{
//声明4个变量
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
脚本就变成了这样:
好了,再点击运行→移动立方体,就能正常运行了。
更多推荐
所有评论(0)