Unity/코드 예제들

글로벌용 글자 좌표 수정

소나무꼴 2021. 5. 4. 16:41

각 언어별 폰트의 좌표가 미묘하게 다른 경우가 발생해서

인스펙터 창에서 조정가능하게 작업.

 

가장 좋은 방법은 폰트마다 달라지는 원인을 해결하면 최고지만 안되면 이렇게 해결

 

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