[Unity] Localization Error Log
https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/index.html
About Localization | Localization | 1.0.5
About Localization Use the Localization package to configure localization settings for your application. Add support for multiple languages and regional variants, including: String localization: Set different strings to display based on locale. Use the Sma
docs.unity3d.com
현지화 번역에 대해서 유니티가 지원해주는 패키지.
차근차근 읽어보면 사용하기 쉽다. 간단하게 설명하면 Addressable 을 이용해서
위와 같은 String, Sprite, Texture, AudioClip, Prefab 을 바꿔치기해준다.
String Table Collection 을 만들어서 번역을 원하는 Text 에 일일히 글자를 넣어주면 된다.
(TextMeshPro 의 경우 당연히 지원이 되는 Font 를 넣어줘야 한다.)
그리고 Addressable을 이용해서 가져와서 사용하는 '무언가' 가 있다면 Addressable Build 를 해줘야 한다.
그리하여 Text 는 문제없이 작동하는 것을 확인할 수 있었지만, 문제는 Asset Table Collection 에서 발생한다.
기본적으로 Unity 에서 지원해주는 Localization 은 바꿔줄 Table 안에 넣어준 값(String, Sprite, Texture, AudioClip, Prefab ..)들을 'Preloading 해놓지 않는다.' 라고 메뉴얼에 설명이 되어있다. 즉, 바꿔주겠다 라고 선택을 하는 순간 한번에 로딩을 해서 가져오도록 되어있다. 하지만 Preloading 을 할 수 있도록 기능을 만들어 두었는데
이것이 문제였다.
Assertion failure 검색해도 잘 안나온다.
Value was not Null 값이 있다네 자꾸
https://docs.unity3d.com/ScriptReference/Assertions.Assert.IsNotNull.html
Unity - Scripting API: Assertions.Assert.IsNotNull
Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close
docs.unity3d.com
public SharedTableData.SharedTableEntry SharedEntry
{
get
{
if (m_SharedTableEntry == null)
{
Assertions.Assert.IsNotNull(Table);
m_SharedTableEntry = Table.SharedData.GetEntry(KeyId);
}
return m_SharedTableEntry;
}
}
안에 들어가보면 Table 에 값이 비었는지 안비었는지 알려주는 경고메세지가 있다.
이것 때문에 한번만에 안바뀌고 자꾸 경고를 뱉어서, 다른 Localization 으로 SetLocale 해주고 돌아와야 비워놓고 경고를 뱉지 않는다.
하루를 걸쳐 찾고 찾아서 기록해둔다.
위에 Preloading 을 다 해제 해주고 빌드를 하니 다 잘 된다.