我试图在我的int前面使用[Range(1f,3f)],以便我可以在我的检查器中获得一个滑块。但它给出了一个错误,上面写着“无法找到名称空间名称范围。您是否缺少using指令或程序集引用”。在每个例子中,我发现没有人会对我有所不同,可能是因为我使用较旧版本的Unity?我怎样才能在这个版本中实现它,或者这是不可能的?
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class AssignMaterial : MonoBehaviour {
public bool assignMaterial;
[Range(1, 3)] public int matId;
void Update()
{
if(assignMaterial)
{
switch(matId)
{
case 1:
this.renderer.material = Resources.Load("NodeMaterial" + matId.ToString()) as Material;
break;
case 2:
this.renderer.material = Resources.Load("NodeMaterial" + matId.ToString()) as Material;
break;
case 3:
this.renderer.material = Resources.Load("NodeMaterial" + matId.ToString()) as Material;
break;
}
DestroyImmediate(this);
}
}
}
答案 0 :(得分:0)
我认为可能是您使用的版本不支持这种情况。 我可以使用range属性确认的最低版本是unity 4.2
除了range属性,您可以改为编辑脚本。用一句话说:
AssignMaterial.matID = (int)EditorGUILayout.Slider(AssignMaterial.matID, 0, 3);
小旁注
您可能希望在那里获得一些尝试/捕获。就像现在一样,如果没有渲染器附加到对象上。您将稍微冻结一致,但如果没有分配,最好抓住此错误并处理该过程。