각 언어별 폰트의 좌표가 미묘하게 다른 경우가 발생해서
인스펙터 창에서 조정가능하게 작업.
가장 좋은 방법은 폰트마다 달라지는 원인을 해결하면 최고지만 안되면 이렇게 해결
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum EGlobalLanguage
{
Korean,
Japanese,
English,
ChineseTraditional,
}
[System.Serializable]
public class GlobalLanguageData
{
public EGlobalLanguage eGlobalLanguage;
public Vector3 move;
// 자간등등 추가 필요
}
public class UIGlobalTextPosition : MonoBehaviour
{
public List<GlobalLanguageData> arrData;
private void Awake()
{
// 언어 얻어오기
SystemLanguage language = Application.systemLanguage;
RectTransform rectTrm = transform as RectTransform;
if (rectTrm == null)
return;
for (int i = 0; i < arrData.Count; i++)
{
if (arrData[i].eGlobalLanguage.ToString() == language.ToString())
{
rectTrm.anchoredPosition += new Vector2(arrData[i].move.x, arrData[i].move.y);
return;
}
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(UIGlobalTextPosition))]
public class GlobalTextPosition : Editor
{
SerializedProperty lstData;
void OnEnable()
{
lstData = serializedObject.FindProperty("arrData");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
if (GUILayout.Button("+"))
{
Debug.Log(lstData.propertyType);
lstData.arraySize++;
}
EditorGUILayout.Space(20);
for (int i = 0; i < lstData.arraySize; i++)
{
GUILayout.BeginVertical("HelpBox");
SerializedProperty subData = lstData.GetArrayElementAtIndex(i);
EditorGUILayout.PropertyField(subData);
if (GUILayout.Button("-"))
{
lstData.DeleteArrayElementAtIndex(i);
break;
}
GUILayout.EndVertical();
EditorGUILayout.Space(20);
}
serializedObject.ApplyModifiedProperties();
}
}
'Unity > 코드 예제들' 카테고리의 다른 글
GUI textField 폰트 크기 조정. (0) | 2021.07.06 |
---|---|
ScriptableObject에서 Dictionary 처리 . (0) | 2021.05.31 |
타일맵 (0) | 2021.04.02 |
com.unity.localization (0) | 2021.03.15 |
폴더안 파일복사 (0) | 2021.02.18 |