그간 좀 바빠서 드디어 업로드를 한다.
미드처럼 Previous에 대해 설명하자면
엑셀로 데이터 테이블을 만든 후 csv로 저장 후 유니티로 가져와 띄우는걸 해볼것이다.
인코딩 관련한 이슈가 있다. 그래서 kr과 ua관련 텍스트가 싹 날아갔다...
아무튼 대충 텍스트를 채웠다.
근데... 어.. 한글이 꺠져서 나왔다. csv파일엔 정상인데
결국 csv파일을 메모장으로 열어서 다른이름으로 저장을 누른 후 인코딩 형식을 utf-8로 "다시" 해줬다.
그리고 난 후...
다음과 같이 성공!
코드는 아래와 같다.
CSVLoader.cs
public enum ENUM_TYPE_ID
{
Key,
Id,
SharedComments,
en,
kr,
ua,
es
}
public class CSVLoader : MonoBehaviour
{
string strPath;
string strFileName;
public string strTestFileName;
public Dictionary<string, List<string>> savedData;
private void Start()
{
savedData = new Dictionary<string, List<string>>();
Load(strTestFileName);
GameObject.Find("GameManager").GetComponent<GameManager>().Load_Done();
}
void Load(string __fileName__)
{
strPath = Application.dataPath + "/" + __fileName__;
Debug.Log("Path : " + strPath);
StreamReader sr = new StreamReader(strPath);
string line = string.Empty;
while ((line = sr.ReadLine()) != null)
{
//Debug.Log("line Data : " + line);
if (line == "Key,Id,SharedComments,en,kr,ua,es")
{
splitBySymbol(line.Split(','), savedData, true);
}
else
{
splitBySymbol(line.Split(','), savedData);
}
}
sr.Close();
}
void Save(string __fileName) // 필요시 구현
{
StreamWriter sr = new StreamWriter(strPath);
}
void splitBySymbol(string[] strData, Dictionary<string, List<string>> dataContainer, bool isFirst = false)
{
if (isFirst)
{
for (int i = 0; i < strData.Length; i++)
{
dataContainer.Add(strData[i], new List<string>());
}
}
else
{
dataContainer[ENUM_TYPE_ID.Key.ToString()].Add(strData[0]);
dataContainer[ENUM_TYPE_ID.Id.ToString()].Add(strData[1]);
dataContainer[ENUM_TYPE_ID.SharedComments.ToString()].Add(strData[2]);
dataContainer[ENUM_TYPE_ID.en.ToString()].Add(strData[3]);
dataContainer[ENUM_TYPE_ID.kr.ToString()].Add(strData[4]);
dataContainer[ENUM_TYPE_ID.ua.ToString()].Add(strData[5]);
dataContainer[ENUM_TYPE_ID.es.ToString()].Add(strData[6]);
}
}
}
DialogTest.cs
public class DialogTest : MonoBehaviour
{
public TMP_Text dialog;
CSVLoader go;
public int currentChannel = 0;
Button btn_en;
Button btn_kr;
Button btn_ua;
Button btn_es;
private void Start()
{
btn_en = GameObject.Find("en").GetComponent<Button>();
btn_kr = GameObject.Find("kr").GetComponent<Button>();
btn_ua = GameObject.Find("ua").GetComponent<Button>();
btn_es = GameObject.Find("es").GetComponent<Button>();
initFunction();
btn_en.onClick.AddListener(delegate { translateToAnotherLanguage("en"); });
btn_kr.onClick.AddListener(delegate { translateToAnotherLanguage("kr"); });
btn_ua.onClick.AddListener(delegate { translateToAnotherLanguage("ua"); });
btn_es.onClick.AddListener(delegate { translateToAnotherLanguage("es"); });
}
public void initFunction()
{
go = GameObject.FindGameObjectWithTag("CSVLoader").GetComponent<CSVLoader>();
dialog = GameObject.Find("txtBox").GetComponentInChildren<TMP_Text>();
dialog.text = go.savedData[ENUM_TYPE_ID.en.ToString()][currentChannel];
}
public void translateToAnotherLanguage(string countryCode)
{
switch (countryCode)
{
case "en":
dialog.text = go.savedData[ENUM_TYPE_ID.en.ToString()][currentChannel];
break;
case "kr":
dialog.text = go.savedData[ENUM_TYPE_ID.kr.ToString()][currentChannel];
break;
case "ua":
dialog.text = go.savedData[ENUM_TYPE_ID.ua.ToString()][currentChannel];
break;
case "es":
dialog.text = go.savedData[ENUM_TYPE_ID.es.ToString()][currentChannel];
break;
default:
Debug.Log("you need to write down the correct word");
break;
}
}
public void changeChannel(int nChannel)
{
currentChannel = nChannel;
}
}
'# 게임 > # Unity' 카테고리의 다른 글
[GPGS for Unity] 필수 설정들 (0) | 2022.10.04 |
---|---|
[PlayFab] 유니티-플레이팹 관련정보 사이트 모음 (0) | 2022.10.03 |
[Unity] Localization에 관해 (0) | 2022.07.12 |
[UnityVR] Oculus Quest2 시작합니다! (0) | 2022.06.01 |
각 종 컴포넌트에 접근하기 (0) | 2022.04.29 |