2014-01-09 6 views
1

내 엔진이 실행되고 있지 않을 때 화음 변수를 세 개 설정했습니다. 그러나이 필드에 데이터를 입력하면 프로그램을 실행하는 순간 Unity가 문자열을 지 웁니다.문자열 필드에 데이터가 저장되지 않습니다.

누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?

내가 생각할 수있는 모든 것을 시도하고 나는 어떤 곳 받고 없습니다 해요 : 편집기 클래스에서

을 :

나는 게임 오브젝트에 첨부했습니다 내 스크립트에
TestEdit target_Object; 
    public string event_NameString = ""; 
    public string event_ActionString = "Event action"; 
    public string event_Label = "Event label"; 

void OnEnable() 
{ 
    target_Object = (TestEdit)target; 
} 

public override void OnInspectorGUI() 
{ 

    GUILayout.BeginVertical(); 

    GUILayout.Space(10); 
    enum_Index = EditorGUILayout.Popup(enum_Index, enum_Option); 

    target_Object.nameString = event_NameString; 

     event_NameString = EditorGUILayout.TextField("Event Category", event_NameString); 
     event_ActionString = EditorGUILayout.TextField("Event Action", event_ActionString); 
     event_Label = EditorGUILayout.TextField("Event Label", event_Label); 


    GUILayout.Space(5); 

    GUILayout.EndVertical(); 
} 

코드 : 문자열 때 취소 설정

:

string nameString = ""; 
string Test2 = ""; 
string Test3 = ""; 


void OnGUI() 
{ 
    if(GUI.Button(new Rect(0,0,100,100), "Send stuff")) 
     Analytics.gua.sendEventHit(nameString, Test2, Test3, 1); 
} 

여기서 두뿐만 아니라 그것을 나타내는 화상이며 성만이 재생되지 않습니다 enter image description here

를 그 다음이 재생되는 경우 : enter image description here

는 내가 뭘하고 싶은거야하면 편집기에서이 값을 가지고 별도의 클래스에서 개최 다른 문자열로 전달할 수 있습니다. 위의 문자열은 편집자 클래스에서 보유하고 있으므로 이러한 값에 직접 액세스 할 수있는 방법이 없으며 솔직히이 값을 앞뒤로 전달하는 방법에 대해서는 조금 퍼지기 마련입니다.

하지만 지금까지 가지고있는 것을 보여주기 위해 코드 샘플을 업데이트 할 것입니다.

+0

범위를 벗어나고 있습니까? – matcheek

+0

나는 그렇게 생각하지 않는다. 그러나 문자열은 편집기 스크립트에 있습니다. – N0xus

답변

1

짧은 대답 : Unity는 관리자 값을 직렬화하지 않습니다. 데이터를 저장해야하는 경우 검사 할 구성 요소에 보관해야합니다.

당신은 일종의 거대한 오브제 공장이라고 생각할 수 있습니다. 장면과 리소스를로드 한 후 수백 또는 수천 개의 GameObject 및 구성 요소를 인스턴스화 한 다음 장면 및 자산 참조를 포함하여 일련 화 된 데이터를 채 웁니다. 코드가 변경되고 어셈블리가 다시 컴파일 될 때마다 장면의 많은 객체에 대해 해당 프로세스가 반복됩니다. 직렬화되지 않은 모든 데이터는 이러한 상황이 발생하면 파기됩니다.

다시 컴파일 할 때마다 관리자 개체가 손실됩니다.

장면을로드 할 때마다 관리자 개체가 손실됩니다.

필자는 Unity가 구성 요소의 선택을 취소하는 순간 검사기 객체를 삭제하는지 여부를 결코 확인한 적이 없지만 그렇게했다면 크게 놀라지 않을 것입니다.

가장 중요 : 편집기 스크립트는 최종 빌드에 포함되지 않습니다. 이는 클라이언트의 어떤 것이라도 의존하는 경우보기 흉한 일입니다.

짧은 답변으로 돌아 가기 : 문자열이 무엇인지는 모르겠지만 영구적으로 유지 될 것으로 예상되는 데이터는 관리자가 보관해서는 안됩니다.

관련 문제