unityzgy/.svn/pristine/d5/d5f65401611876a901abe9a1bad380867f1b17e4.svn-base
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

157 lines
6.9 KiB
Plaintext

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditorInternal;
[CustomEditor(typeof(EnviroInterior))]
public class EnviroInteriorEditor : Editor {
GUIStyle boxStyle;
GUIStyle wrapStyle;
GUIStyle headerStyle;
EnviroInterior myTarget;
void OnEnable()
{
myTarget = (EnviroInterior)target;
}
public override void OnInspectorGUI ()
{
myTarget = (EnviroInterior)target;
if (boxStyle == null) {
boxStyle = new GUIStyle (GUI.skin.box);
boxStyle.normal.textColor = GUI.skin.label.normal.textColor;
boxStyle.fontStyle = FontStyle.Bold;
boxStyle.alignment = TextAnchor.UpperLeft;
}
if (wrapStyle == null)
{
wrapStyle = new GUIStyle(GUI.skin.label);
wrapStyle.fontStyle = FontStyle.Normal;
wrapStyle.wordWrap = true;
wrapStyle.alignment = TextAnchor.UpperLeft;
}
if (headerStyle == null)
{
headerStyle = new GUIStyle(GUI.skin.label);
headerStyle.fontStyle = FontStyle.Bold;
headerStyle.wordWrap = true;
headerStyle.alignment = TextAnchor.UpperLeft;
}
GUILayout.BeginVertical("Enviro - Interior Zone", boxStyle);
EditorGUI.BeginChangeCheck();
GUILayout.Space(20);
EditorGUILayout.LabelField("Welcome to the Interior Zone for Enviro - Sky and Weather!", wrapStyle);
GUILayout.EndVertical ();
GUILayout.BeginVertical("Setup", boxStyle);
GUILayout.Space(20);
myTarget.zoneTriggerType = (EnviroInterior.ZoneTriggerType)EditorGUILayout.EnumPopup("Zone Trigger Type", myTarget.zoneTriggerType);
if (GUILayout.Button ("Create New Trigger")) {
myTarget.CreateNewTrigger ();
}
for (int i = 0; i < myTarget.triggers.Count; i++) {
if (myTarget.triggers[i] != null)
{
GUILayout.BeginVertical("", boxStyle);
GUILayout.Space(10);
myTarget.triggers[i].Name = EditorGUILayout.TextField("Name", myTarget.triggers[i].Name);
GUILayout.Space(10);
if (GUILayout.Button("Select"))
{
Selection.activeObject = myTarget.triggers[i].gameObject;
}
if (GUILayout.Button("Remove"))
{
myTarget.RemoveTrigger(myTarget.triggers[i]);
}
GUILayout.EndVertical();
}
}
GUILayout.EndVertical ();
GUILayout.BeginVertical("Lighting", boxStyle);
GUILayout.Space(20);
myTarget.directLighting = EditorGUILayout.BeginToggleGroup("Direct Light Modifications", myTarget.directLighting);
myTarget.directLightingMod = EditorGUILayout.ColorField ("Direct Lighting Mod", myTarget.directLightingMod);
myTarget.directLightFadeSpeed = EditorGUILayout.Slider("Direct Fading Speed", myTarget.directLightFadeSpeed, 0.01f, 100f);
EditorGUILayout.EndToggleGroup ();
myTarget.ambientLighting = EditorGUILayout.BeginToggleGroup("Ambient Light Modifications", myTarget.ambientLighting);
myTarget.ambientLightingMod = EditorGUILayout.ColorField ("Ambient Sky Lighting Mod", myTarget.ambientLightingMod);
if (EnviroSkyMgr.instance != null && EnviroSkyMgr.instance.IsAvailable())
{
if (EnviroSkyMgr.instance.LightSettings.ambientMode == UnityEngine.Rendering.AmbientMode.Trilight)
{
myTarget.ambientEQLightingMod = EditorGUILayout.ColorField("Ambient Equator Lighting Mod", myTarget.ambientEQLightingMod);
myTarget.ambientGRLightingMod = EditorGUILayout.ColorField("Ambient Ground Lighting Mod", myTarget.ambientGRLightingMod);
}
}
else
{
myTarget.ambientEQLightingMod = EditorGUILayout.ColorField("Ambient Equator Lighting Mod", myTarget.ambientEQLightingMod);
myTarget.ambientGRLightingMod = EditorGUILayout.ColorField("Ambient Ground Lighting Mod", myTarget.ambientGRLightingMod);
}
myTarget.ambientLightFadeSpeed = EditorGUILayout.Slider("Ambient Fading Speed", myTarget.ambientLightFadeSpeed, 0.01f, 100f);
EditorGUILayout.EndToggleGroup ();
GUILayout.EndVertical ();
GUILayout.BeginVertical("Skybox", boxStyle);
GUILayout.Space(20);
myTarget.skybox = EditorGUILayout.BeginToggleGroup("Skybox Modifications", myTarget.skybox);
myTarget.skyboxColorMod = EditorGUILayout.ColorField("Skybox Color Mod", myTarget.skyboxColorMod);
myTarget.skyboxFadeSpeed = EditorGUILayout.Slider("Skybox Fading Speed", myTarget.skyboxFadeSpeed, 0.01f, 100f);
EditorGUILayout.EndToggleGroup();
GUILayout.EndVertical();
GUILayout.BeginVertical("Audio", boxStyle);
GUILayout.Space(20);
myTarget.ambientAudio = EditorGUILayout.BeginToggleGroup("Ambient Audio Modifications", myTarget.ambientAudio);
myTarget.ambientVolume = EditorGUILayout.Slider ("Ambient Audio Mod", myTarget.ambientVolume,-1f,0f);
EditorGUILayout.EndToggleGroup ();
myTarget.weatherAudio = EditorGUILayout.BeginToggleGroup("Weather Audio Modifications", myTarget.weatherAudio);
myTarget.weatherVolume = EditorGUILayout.Slider ("Weather Audio Mod", myTarget.weatherVolume,-1f,0f);
EditorGUILayout.EndToggleGroup ();
GUILayout.Space(20);
GUILayout.Label("Zone Audio", headerStyle);
myTarget.zoneAudioClip = (AudioClip)EditorGUILayout.ObjectField("Zone Ambient Clip", myTarget.zoneAudioClip, typeof(AudioClip), false);
myTarget.zoneAudioVolume = EditorGUILayout.Slider("Zone Ambient Volume", myTarget.zoneAudioVolume, 0f, 1f);
myTarget.zoneAudioFadingSpeed = EditorGUILayout.Slider("Zone Ambient Fading Speed", myTarget.zoneAudioFadingSpeed, 0.01f, 100f);
GUILayout.EndVertical ();
GUILayout.BeginVertical("Fog", boxStyle);
GUILayout.Space(20);
myTarget.fogFadeSpeed = EditorGUILayout.Slider("Fog Fading Speed", myTarget.fogFadeSpeed, 0.01f, 100f);
myTarget.fog = EditorGUILayout.BeginToggleGroup("Fog Intensity Modifications", myTarget.fog);
myTarget.minFogMod = EditorGUILayout.Slider("Fog Min Value", myTarget.minFogMod, 0f, 1f);
EditorGUILayout.EndToggleGroup();
myTarget.fogColor = EditorGUILayout.BeginToggleGroup("Fog Color Modifications", myTarget.fogColor);
myTarget.fogColorMod = EditorGUILayout.ColorField("Fog Color Mod", myTarget.fogColorMod);
EditorGUILayout.EndToggleGroup();
GUILayout.EndVertical();
GUILayout.BeginVertical("Weather Effects", boxStyle);
GUILayout.Space(20);
myTarget.weatherEffects = EditorGUILayout.BeginToggleGroup("Weather Effects Modifications", myTarget.weatherEffects);
myTarget.weatherFadeSpeed = EditorGUILayout.Slider("Weather Effects Fading Speed", myTarget.weatherFadeSpeed, 0.01f, 100f);
EditorGUILayout.EndToggleGroup();
GUILayout.EndVertical();
if (EditorGUI.EndChangeCheck())
{
EditorUtility.SetDirty(target);
}
}
}