83 lines
3.3 KiB
C#
83 lines
3.3 KiB
C#
using UnityEditor.UIElements;
|
|
using UnityEngine;
|
|
using UnityEngine.Localization.Settings;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace UnityEditor.Localization.UI
|
|
{
|
|
class LocalizationSettingsProvider : AssetSettingsProvider
|
|
{
|
|
class Texts
|
|
{
|
|
public GUIContent noSettingsMsg = EditorGUIUtility.TrTextContent("You have no active Localization Settings. Would you like to create one?");
|
|
public GUIContent activeSettings = EditorGUIUtility.TrTextContent("Active Settings", "The Localization Settings that will be used by this project and included into any builds.");
|
|
}
|
|
static Texts s_Texts;
|
|
|
|
string m_SearchContext;
|
|
VisualElement m_Root;
|
|
VisualElement m_Editor;
|
|
|
|
public LocalizationSettingsProvider()
|
|
: base("Project/Localization", () => LocalizationEditorSettings.ActiveLocalizationSettings)
|
|
{
|
|
}
|
|
|
|
public override void OnActivate(string searchContext, VisualElement rootElement)
|
|
{
|
|
m_SearchContext = searchContext;
|
|
if (s_Texts == null)
|
|
s_Texts = new Texts();
|
|
|
|
m_Root = new ScrollView { style = { marginLeft = 9, marginTop = 1 }};
|
|
m_Root.Add(new Label("Localization") { style = { marginBottom = 12, fontSize = 19, unityFontStyleAndWeight = FontStyle.Bold } });
|
|
rootElement.Add(m_Root);
|
|
if (LocalizationEditorSettings.ActiveLocalizationSettings != null)
|
|
{
|
|
m_Root.Add(new InspectorElement(LocalizationEditorSettings.ActiveLocalizationSettings));
|
|
}
|
|
else
|
|
{
|
|
m_Root.Add(new IMGUIContainer(CreateSettingsGUI));
|
|
}
|
|
}
|
|
|
|
void CreateSettingsGUI()
|
|
{
|
|
if (LocalizationEditorSettings.ActiveLocalizationSettings == null)
|
|
{
|
|
if (Event.current.type != EventType.Layout && m_Editor != null)
|
|
{
|
|
m_Editor.RemoveFromHierarchy();
|
|
m_Editor = null;
|
|
}
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
var obj = EditorGUILayout.ObjectField(s_Texts.activeSettings, LocalizationEditorSettings.ActiveLocalizationSettings, typeof(LocalizationSettings), false) as LocalizationSettings;
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
LocalizationEditorSettings.ActiveLocalizationSettings = obj;
|
|
}
|
|
|
|
EditorGUILayout.HelpBox(s_Texts.noSettingsMsg.text, MessageType.Info, true);
|
|
if (GUILayout.Button("Create", GUILayout.Width(100)))
|
|
{
|
|
var created = LocalizationSettingsMenuItems.CreateLocalizationAsset();
|
|
if (created != null)
|
|
{
|
|
LocalizationEditorSettings.ActiveLocalizationSettings = created;
|
|
}
|
|
}
|
|
}
|
|
else if (Event.current.type != EventType.Layout && m_Editor == null)
|
|
{
|
|
m_Editor = new InspectorElement(LocalizationEditorSettings.ActiveLocalizationSettings);
|
|
m_Root.Add(m_Editor);
|
|
}
|
|
}
|
|
|
|
[SettingsProvider]
|
|
static SettingsProvider CreateProjectSettingsProvider() => new LocalizationSettingsProvider();
|
|
}
|
|
}
|