특정 경로에서 Json파일을 읽어와 뿌려주는데, 텍스트가 수정되지 않는 이슈가 발생
using System;
using System.IO;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;
namespace Test.Project
{
public class EditJsonData : EditorWindow
{
// 메뉴 생성
[MenuItem("My Window/Edit Json")]
public static void ShowEditorWindow()
{
var _window = GetWindow<EditJsonData>("Window Test");
}
public static string TESTJSON_FILENAME = "user_data.json";
void OnGUI()
{
string JsonData = LoadJson();
JsonData = GUILayout.TextField(JsonData);
}
public static string LoadJson()
{
var jsonPath = $"{Application.persistentDataPath}/{TESTJSON_FILENAME}";
if (File.Exists(jsonPath))
{
string JsonString = File.ReadAllText(jsonPath);
return JsonString;
}
else
{
return string.Empty;
}
}
}
}
OnGUI()
에 Json데이터를 초기화하는 부분이 들어가있기 때문에, 필드를 수정해도 OnGUI()
가 호출되면 다시 데이터가 경로에 저장된 값으로 초기화가 된다.
OnGUI()
의 경우 매 틱마다 호출되기 때문에, 단순히 화면을 구성하는데만 사용해야 한다고 한다.
개발팀 OO님께서 처리방안에 대해 도움주셔서 버튼과 같이 이벤트를 주었을 때 데이터를 한번만 가져오고 처리하도록 수정했다.
using System;
using System.IO;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;
namespace Test.Project
{
public class EditJsonData : EditorWindow
{
// 메뉴 생성
[MenuItem("My Window/Edit Json")]
public static void ShowEditorWindow()
{
var _window = GetWindow<EditJsonData>("Window Test");
}
public static string TESTJSON_FILENAME = "user_data.json";
void OnGUI()
{
jsonString = GUILayout.TextField(jsonString);
if (GUILayout.Button("init"))
{
jsonString = LoadJson();
}
}
public static string LoadJson()
{
var jsonPath = $"{Application.persistentDataPath}/{TESTJSON_FILENAME}";
if (File.Exists(jsonPath))
{
string JsonString = File.ReadAllText(jsonPath);
return JsonString;
}
else
{
return string.Empty;
}
}
}
}