2015-02-04 3 views
0

제 인스펙터에서 슬라이더를 얻을 수 있도록 내 Int 앞에 [Range (1f, 3f)]를 사용하려고합니다. 그러나 "네임 스페이스 이름 범위를 찾을 수 없습니다. 사용 지시문 또는 어셈블리 참조가 누락 되었습니까?"라는 오류 메시지가 나타납니다. 아무도 발견하지 못하는 모든 예를 들어 보면 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); 
     } 
    } 
} 
+1

왜'floats'로'int'를 제한하려고합니까? 그리고 당신은'UnityEngine을 사용하고 있습니까? ' –

+0

O 죄송합니다. 실수를 사용하지 않았습니다. 여기에 입력 할 때 ints가 생각하지 않았지만, 예, UnityEngine을 사용하고 있습니다. 상단에 –

+0

통일의 옛 버전? 어떤 버전입니까? –

답변

0

사용중인 버전에서 지원되지 않는 경우가 있습니다. 구현 된 range 속성으로 자신을 확인할 수있는 가장 낮은 버전은 unity 4.2

대신에 편집기 스크립트를 만들 수 있습니다. 같은 라인을 말하는 뭔가 :

AssignMaterial.matID = (int)EditorGUILayout.Slider(AssignMaterial.matID, 0, 3); 

작은 보조 노트

당신은 거기에 몇 가지 시도/캐치를 얻을 수도 있습니다. 현재와 ​​마찬가지로 객체에 렌더러가 연결되어 있지 않습니다. 이 오류를 포착하고 이것이 지정되지 않은 경우 프로세스를 폐기하는 것이 더 나은 반면 단합을 동결합니다.

관련 문제