SHA256
forked from ADOFAIEditorForum/ADOFAIRenderer
Translate Codebase Comments and Log Messages to English
This commit is contained in:
23 files changed
+915
-921
No files matched your search
+79
-82
@@ -62,34 +62,34 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
_videoEncodingConfigButton = _root.Q<Button>("VideoEncodingSettingsButton");
|
||||
if (_videoEncodingConfigButton != null)
|
||||
{
|
||||
Melon<RenderMod>.Logger.Msg($"[UI] VideoEncodingSettingsButton 발견: pickingMode={_videoEncodingConfigButton.pickingMode}, enabledSelf={_videoEncodingConfigButton.enabledSelf}");
|
||||
Melon<RenderMod>.Logger.Msg($"[UI] VideoEncodingSettingsButton found: pickingMode={_videoEncodingConfigButton.pickingMode}, enabledSelf={_videoEncodingConfigButton.enabledSelf}");
|
||||
_videoEncodingConfigButton.RegisterCallback<ClickEvent>(_ => OpenVideoEncodingConfig());
|
||||
}
|
||||
else
|
||||
{
|
||||
Melon<RenderMod>.Logger.Error("Button 'VideoEncodingSettingsButton'을(를) 찾을 수 없습니다.");
|
||||
Melon<RenderMod>.Logger.Error("Button 'VideoEncodingSettingsButton' not found.");
|
||||
}
|
||||
|
||||
_audioEncodingConfigButton = _root.Q<Button>("AudioEncodingSettingsButton");
|
||||
if (_audioEncodingConfigButton != null)
|
||||
{
|
||||
Melon<RenderMod>.Logger.Msg($"[UI] AudioEncodingSettingsButton 발견: pickingMode={_audioEncodingConfigButton.pickingMode}, enabledSelf={_audioEncodingConfigButton.enabledSelf}");
|
||||
Melon<RenderMod>.Logger.Msg($"[UI] AudioEncodingSettingsButton found: pickingMode={_audioEncodingConfigButton.pickingMode}, enabledSelf={_audioEncodingConfigButton.enabledSelf}");
|
||||
_audioEncodingConfigButton.RegisterCallback<ClickEvent>(_ => OpenAudioEncodingConfig());
|
||||
}
|
||||
else
|
||||
{
|
||||
Melon<RenderMod>.Logger.Error("Button 'AudioEncodingSettingsButton'을(를) 찾을 수 없습니다.");
|
||||
Melon<RenderMod>.Logger.Error("Button 'AudioEncodingSettingsButton' not found.");
|
||||
}
|
||||
|
||||
var presetSettingsButton = _root.Q<Button>("PresetSettingsButton");
|
||||
if (presetSettingsButton != null)
|
||||
{
|
||||
Melon<RenderMod>.Logger.Msg($"[UI] PresetSettingsButton 발견: pickingMode={presetSettingsButton.pickingMode}, enabledSelf={presetSettingsButton.enabledSelf}");
|
||||
Melon<RenderMod>.Logger.Msg($"[UI] PresetSettingsButton found: pickingMode={presetSettingsButton.pickingMode}, enabledSelf={presetSettingsButton.enabledSelf}");
|
||||
presetSettingsButton.RegisterCallback<ClickEvent>(_ => OpenPresetConfig());
|
||||
}
|
||||
else
|
||||
{
|
||||
Melon<RenderMod>.Logger.Error("Button 'PresetSettingsButton'을(를) 찾을 수 없습니다.");
|
||||
Melon<RenderMod>.Logger.Error("Button 'PresetSettingsButton' not found.");
|
||||
}
|
||||
|
||||
var bottomRow = CreateRow();
|
||||
@@ -99,11 +99,11 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
bottomRow.style.bottom = 0f;
|
||||
bottomRow.style.justifyContent = Justify.FlexEnd;
|
||||
|
||||
_advancedSettingsButton = new Button { name = "AdvancedSettingsButton", text = "고급 설정..." };
|
||||
_advancedSettingsButton = new Button { name = "AdvancedSettingsButton", text = "Advanced Settings..." };
|
||||
bottomRow.Add(_advancedSettingsButton);
|
||||
|
||||
(_root.childCount > 0 ? _root[0] : _root).Add(bottomRow);
|
||||
Melon<RenderMod>.Logger.Msg("[UI] AdvancedSettingsButton 동적 생성 완료.");
|
||||
Melon<RenderMod>.Logger.Msg("[UI] AdvancedSettingsButton dynamically created.");
|
||||
|
||||
_advancedSettingsButton.RegisterCallback<ClickEvent>(_ => OpenAdvancedConfig());
|
||||
|
||||
@@ -126,7 +126,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
}
|
||||
};
|
||||
|
||||
// 기존 UI와 동일한 폰트 적용
|
||||
// Apply same font as existing UI
|
||||
if (RenderMod.FontBundle)
|
||||
{
|
||||
try
|
||||
@@ -140,7 +140,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
_versionLabel.RegisterCallback<PointerUpLinkTagEvent>(OnLinkTagClicked);
|
||||
|
||||
(_root.childCount > 0 ? _root[0] : _root).Add(_versionLabel);
|
||||
Melon<RenderMod>.Logger.Msg("[UI] VersionLabel 동적 생성 완료.");
|
||||
Melon<RenderMod>.Logger.Msg("[UI] VersionLabel dynamically created.");
|
||||
}
|
||||
|
||||
private void OpenAdvancedConfig()
|
||||
@@ -176,9 +176,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
}
|
||||
};
|
||||
|
||||
// 1. 타이틀 로우
|
||||
// 1. Title Row
|
||||
var titleRow = CreateRow();
|
||||
var titleLabel = new Label("고급 설정")
|
||||
var titleLabel = new Label("Advanced Settings")
|
||||
{
|
||||
style =
|
||||
{
|
||||
@@ -189,9 +189,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
titleRow.Add(titleLabel);
|
||||
_advancedConfigContainer.Add(titleRow);
|
||||
|
||||
// 2. 확장자 로우
|
||||
// 2. Extension Row
|
||||
var fileExtensionRow = CreateRow();
|
||||
var fileExtensionLabel = CreateFormLabel("확장자");
|
||||
var fileExtensionLabel = CreateFormLabel("File Extension");
|
||||
var fileExtensionChoices = new List<string> { "mkv", "mp4", "mov", "webm", "avi" };
|
||||
var currentFileExt = string.IsNullOrWhiteSpace(tempConfig.FileExtension) ? "mkv" : tempConfig.FileExtension.TrimStart('.').ToLower();
|
||||
if (!fileExtensionChoices.Contains(currentFileExt))
|
||||
@@ -203,25 +203,25 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
fileExtensionRow.Add(fileExtensionDropdown);
|
||||
_advancedConfigContainer.Add(fileExtensionRow);
|
||||
|
||||
// 3. 오디오 처리 로우
|
||||
// 3. Audio Processing Row
|
||||
var processAudioRow = CreateRow();
|
||||
var processAudioLabel = CreateFormLabel("오디오 처리");
|
||||
var processAudioLabel = CreateFormLabel("Process Audio");
|
||||
var processAudioToggle = new Toggle { name = "AdvancedProcessAudioToggle", label = "", value = tempConfig.ProcessAudio };
|
||||
processAudioRow.Add(processAudioLabel);
|
||||
processAudioRow.Add(processAudioToggle);
|
||||
_advancedConfigContainer.Add(processAudioRow);
|
||||
|
||||
// 4. 논타일 모드 로우
|
||||
// 4. Non-Tile Mode Row
|
||||
var nonTileRow = CreateRow();
|
||||
var nonTileLabel = CreateFormLabel("논타일 모드");
|
||||
var nonTileLabel = CreateFormLabel("Non-Tile Mode");
|
||||
var nonTileToggle = new Toggle { name = "AdvancedNonTileToggle", label = "", value = tempConfig.NonTile };
|
||||
nonTileRow.Add(nonTileLabel);
|
||||
nonTileRow.Add(nonTileToggle);
|
||||
_advancedConfigContainer.Add(nonTileRow);
|
||||
|
||||
// 5. 랜덤 시드 로우
|
||||
// 5. Random Seed Row
|
||||
var randomSeedRow = CreateRow();
|
||||
var randomSeedLabel = CreateFormLabel("랜덤 시드 (입력 선택)");
|
||||
var randomSeedLabel = CreateFormLabel("Random Seed (Optional)");
|
||||
var randomSeedField = new TextField { name = "AdvancedRandomSeed", label = "", value = tempConfig.RandomSeed?.ToString() ?? string.Empty };
|
||||
|
||||
randomSeedField.RegisterValueChangedCallback(evt =>
|
||||
@@ -237,10 +237,10 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
randomSeedRow.Add(randomSeedField);
|
||||
_advancedConfigContainer.Add(randomSeedRow);
|
||||
|
||||
// 6. 제어 버튼 로우 (취소 / 저장)
|
||||
// 6. Control Button Row (Cancel / Save)
|
||||
var buttonRow = CreateRow();
|
||||
var cancelBtn = new Button { text = "취소" };
|
||||
var saveBtn = new Button { text = "저장" };
|
||||
var cancelBtn = new Button { text = "Cancel" };
|
||||
var saveBtn = new Button { text = "Save" };
|
||||
|
||||
buttonRow.Add(cancelBtn);
|
||||
buttonRow.Add(saveBtn);
|
||||
@@ -315,7 +315,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
_root.Remove(_videoEncodingConfigContainer);
|
||||
}
|
||||
|
||||
// 1. 전체 화면 컨테이너 생성 및 배경 적용
|
||||
// 1. Create full screen container and apply background
|
||||
_videoEncodingConfigContainer = new VisualElement
|
||||
{
|
||||
name = "VideoEncodingSettingsContainer",
|
||||
@@ -332,9 +332,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
}
|
||||
};
|
||||
|
||||
// 2. 타이틀 로우
|
||||
// 2. Title Row
|
||||
var titleRow = CreateRow();
|
||||
var titleLabel = new Label("비디오 인코딩 설정")
|
||||
var titleLabel = new Label("Video Encoding Settings")
|
||||
{
|
||||
style =
|
||||
{
|
||||
@@ -345,71 +345,71 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
titleRow.Add(titleLabel);
|
||||
_videoEncodingConfigContainer.Add(titleRow);
|
||||
|
||||
// 3. 코덱 로우
|
||||
// 3. Codec Row
|
||||
var codecRow = CreateRow();
|
||||
var codecLabel = CreateFormLabel("코덱");
|
||||
var codecLabel = CreateFormLabel("Codec");
|
||||
var codecChoices = new List<string>(Enum.GetNames(typeof(Codec)));
|
||||
var codecDropdown = new DropdownField(codecChoices, tempConfig.Codec.ToString()) { name = "VideoCodec" };
|
||||
codecRow.Add(codecLabel);
|
||||
codecRow.Add(codecDropdown);
|
||||
_videoEncodingConfigContainer.Add(codecRow);
|
||||
|
||||
// 4. 모드 로우
|
||||
// 4. Mode Row
|
||||
var modeRow = CreateRow();
|
||||
var modeLabel = CreateFormLabel("모드");
|
||||
var modeLabel = CreateFormLabel("Mode");
|
||||
var modeChoices = new List<string>(Enum.GetNames(typeof(RateControlMode)));
|
||||
var modeDropdown = new DropdownField(modeChoices, tempConfig.RateControlMode.ToString()) { name = "VideoRateControlMode" };
|
||||
modeRow.Add(modeLabel);
|
||||
modeRow.Add(modeDropdown);
|
||||
_videoEncodingConfigContainer.Add(modeRow);
|
||||
|
||||
// 5. 비트레이트 로우
|
||||
// 5. Bitrate Row
|
||||
var bitrateRow = CreateRow();
|
||||
var bitrateLabel = CreateFormLabel("비트레이트(kbps)");
|
||||
var bitrateLabel = CreateFormLabel("Bitrate (kbps)");
|
||||
var bitrateField = new IntegerField { name = "VideoBitrate", label = "", value = tempConfig.Bitrate };
|
||||
bitrateRow.Add(bitrateLabel);
|
||||
bitrateRow.Add(bitrateField);
|
||||
_videoEncodingConfigContainer.Add(bitrateRow);
|
||||
|
||||
// 5.5. 최대 비트레이트 로우 (VBR 전용)
|
||||
// 5.5. Max Bitrate Row (VBR only)
|
||||
var maxBitrateRow = CreateRow();
|
||||
var maxBitrateLabel = CreateFormLabel("최대 비트레이트(kbps)");
|
||||
var maxBitrateLabel = CreateFormLabel("Max Bitrate (kbps)");
|
||||
var maxBitrateField = new IntegerField { name = "VideoMaxBitrate", label = "", value = tempConfig.MaxBitrate };
|
||||
maxBitrateRow.Add(maxBitrateLabel);
|
||||
maxBitrateRow.Add(maxBitrateField);
|
||||
_videoEncodingConfigContainer.Add(maxBitrateRow);
|
||||
|
||||
// 6. QP 로우
|
||||
// 6. QP Row
|
||||
var qpRow = CreateRow();
|
||||
var qpLabel = CreateFormLabel("품질 (QP)");
|
||||
var qpLabel = CreateFormLabel("Quality (QP)");
|
||||
var qpField = new IntegerField { name = "VideoQP", label = "", value = tempConfig.QP };
|
||||
qpRow.Add(qpLabel);
|
||||
qpRow.Add(qpField);
|
||||
_videoEncodingConfigContainer.Add(qpRow);
|
||||
|
||||
// 6.5. 키프레임 간격 로우 (초 단위)
|
||||
// 6.5. Keyframe Interval Row (seconds)
|
||||
var keyframeRow = CreateRow();
|
||||
var keyframeLabel = CreateFormLabel("키프레임 간격(초)");
|
||||
var keyframeLabel = CreateFormLabel("Keyframe Interval (s)");
|
||||
var keyframeField = new DoubleField { name = "VideoKeyframeInterval", label = "", value = tempConfig.KeyframeInterval };
|
||||
keyframeRow.Add(keyframeLabel);
|
||||
keyframeRow.Add(keyframeField);
|
||||
_videoEncodingConfigContainer.Add(keyframeRow);
|
||||
|
||||
// 6.75. 강제 소프트웨어 인코더 로우 (라벨 + 토글)
|
||||
// 6.75. Force Software Encoder Row (Label + Toggle)
|
||||
var forceSoftwareRow = CreateRow();
|
||||
var forceSoftwareLabel = CreateFormLabel("소프트웨어 인코더");
|
||||
var forceSoftwareLabel = CreateFormLabel("Software Encoder");
|
||||
var forceSoftwareToggle = new Toggle { name = "VideoForceSoftwareEncoderToggle", label = "", value = tempConfig.ForceSoftwareEncoder };
|
||||
forceSoftwareRow.Add(forceSoftwareLabel);
|
||||
forceSoftwareRow.Add(forceSoftwareToggle);
|
||||
_videoEncodingConfigContainer.Add(forceSoftwareRow);
|
||||
|
||||
// 7. QP = 0 (무손실) 경고 라벨 로우 생성
|
||||
// 7. QP = 0 (Lossless) Warning Label Row
|
||||
var warningRow = CreateRow();
|
||||
warningRow.style.height = StyleKeyword.Auto;
|
||||
warningRow.style.maxHeight = StyleKeyword.Null;
|
||||
warningRow.style.minHeight = StyleKeyword.Null;
|
||||
|
||||
var warningLabel = new Label("주의: QP를 0으로 설정하면 무손실 인코딩이 적용되어 용량이 매우 커질 수 있습니다.")
|
||||
var warningLabel = new Label("Warning: Setting QP to 0 applies lossless encoding and may result in very large file sizes.")
|
||||
{
|
||||
style =
|
||||
{
|
||||
@@ -441,10 +441,10 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
: DisplayStyle.None;
|
||||
});
|
||||
|
||||
// 8. 제어 버튼 로우 (취소 / 저장)
|
||||
// 8. Control Button Row (Cancel / Save)
|
||||
var buttonRow = CreateRow();
|
||||
var cancelBtn = new Button { text = "취소" };
|
||||
var saveBtn = new Button { text = "저장" };
|
||||
var cancelBtn = new Button { text = "Cancel" };
|
||||
var saveBtn = new Button { text = "Save" };
|
||||
|
||||
buttonRow.Add(cancelBtn);
|
||||
buttonRow.Add(saveBtn);
|
||||
@@ -489,11 +489,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
|
||||
_root.Add(_videoEncodingConfigContainer);
|
||||
|
||||
// 화면 전환 활성화
|
||||
ToggleScreens(true);
|
||||
return;
|
||||
|
||||
// 화면 전환 제어
|
||||
void ToggleScreens(bool showEncoding)
|
||||
{
|
||||
if (_root.childCount > 0)
|
||||
@@ -503,7 +501,6 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
_videoEncodingConfigContainer.style.display = showEncoding ? DisplayStyle.Flex : DisplayStyle.None;
|
||||
}
|
||||
|
||||
// 가시성 필터링 업데이트 (행 단위로 보임/숨김 제어)
|
||||
void UpdateVisibility(string selectedModeStr)
|
||||
{
|
||||
if (!Enum.TryParse<RateControlMode>(selectedModeStr, out var mode)) return;
|
||||
@@ -547,9 +544,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
}
|
||||
};
|
||||
|
||||
// 1. 타이틀 로우
|
||||
// 1. Title Row
|
||||
var titleRow = CreateRow();
|
||||
var titleLabel = new Label("오디오 인코딩 설정")
|
||||
var titleLabel = new Label("Audio Encoding Settings")
|
||||
{
|
||||
style =
|
||||
{
|
||||
@@ -560,17 +557,17 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
titleRow.Add(titleLabel);
|
||||
_audioEncodingConfigContainer.Add(titleRow);
|
||||
|
||||
// 2. 오디오 렌더링 활성화 로우 (라벨 + 토글)
|
||||
// 2. Enable Audio Rendering Row (Label + Toggle)
|
||||
var renderAudioRow = CreateRow();
|
||||
var renderAudioLabel = CreateFormLabel("오디오 렌더링 활성화");
|
||||
var renderAudioLabel = CreateFormLabel("Enable Audio Rendering");
|
||||
var renderAudioToggle = new Toggle { name = "AudioRenderAudioToggle", label = "", value = tempAudioConfig.RenderAudio };
|
||||
renderAudioRow.Add(renderAudioLabel);
|
||||
renderAudioRow.Add(renderAudioToggle);
|
||||
_audioEncodingConfigContainer.Add(renderAudioRow);
|
||||
|
||||
// 3. 샘플 레이트 로우
|
||||
// 3. Sample Rate Row
|
||||
var sampleRateRow = CreateRow();
|
||||
var sampleRateLabel = CreateFormLabel("샘플 레이트(Hz)");
|
||||
var sampleRateLabel = CreateFormLabel("Sample Rate (Hz)");
|
||||
var isOpus = config.VideoConfig.Codec is Codec.AV1 or Codec.VP9 or Codec.VVC;
|
||||
|
||||
List<string> sampleRateChoices;
|
||||
@@ -599,9 +596,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
sampleRateRow.Add(sampleRateDropdown);
|
||||
_audioEncodingConfigContainer.Add(sampleRateRow);
|
||||
|
||||
// 4. 채널 로우
|
||||
// 4. Channels Row
|
||||
var channelsRow = CreateRow();
|
||||
var channelsLabel = CreateFormLabel("오디오 채널");
|
||||
var channelsLabel = CreateFormLabel("Audio Channels");
|
||||
var channelsDropdown = new DropdownField(
|
||||
new List<string> { "1 (Mono)", "2 (Stereo)" },
|
||||
tempAudioConfig.AudioChannels == 1 ? "1 (Mono)" : "2 (Stereo)"
|
||||
@@ -610,9 +607,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
channelsRow.Add(channelsDropdown);
|
||||
_audioEncodingConfigContainer.Add(channelsRow);
|
||||
|
||||
// 5. 비트레이트 로우 (kbps 단위 입력)
|
||||
// 5. Bitrate Row (input in kbps)
|
||||
var bitrateRow = CreateRow();
|
||||
var bitrateLabel = CreateFormLabel("오디오 비트레이트(kbps)");
|
||||
var bitrateLabel = CreateFormLabel("Audio Bitrate (kbps)");
|
||||
var bitrateField = new IntegerField { name = "AudioBitrateKbps", label = "", value = tempAudioConfig.AudioBitrate / 1000 };
|
||||
bitrateRow.Add(bitrateLabel);
|
||||
bitrateRow.Add(bitrateField);
|
||||
@@ -622,14 +619,14 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
audioValidator.AddLimits("AudioBitrateKbps", new PositiveOnlyIntegerLimit(), new RangeIntegerLimit(32, 1024));
|
||||
audioValidator.SetupValidation();
|
||||
|
||||
// 가시성 업데이트 (오디오 렌더링 비활성화 시 하위 설정 숨김)
|
||||
// Update visibility (hide sub-settings when audio rendering is disabled)
|
||||
renderAudioToggle.RegisterValueChangedCallback(evt => UpdateAudioVisibility(evt.newValue));
|
||||
UpdateAudioVisibility(tempAudioConfig.RenderAudio);
|
||||
|
||||
// 6. 제어 버튼 로우 (취소 / 저장)
|
||||
// 6. Control Button Row (Cancel / Save)
|
||||
var buttonRow = CreateRow();
|
||||
var cancelBtn = new Button { text = "취소" };
|
||||
var saveBtn = new Button { text = "저장" };
|
||||
var cancelBtn = new Button { text = "Cancel" };
|
||||
var saveBtn = new Button { text = "Save" };
|
||||
|
||||
buttonRow.Add(cancelBtn);
|
||||
buttonRow.Add(saveBtn);
|
||||
@@ -686,7 +683,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
{
|
||||
if (!ValidateInputs())
|
||||
{
|
||||
Melon<RenderMod>.Logger.Error("필수 입력 값이 비어 있거나 올바르지 않습니다. 모든 설정을 입력해 주세요.");
|
||||
Melon<RenderMod>.Logger.Error("Required input fields are empty or invalid. Please fill in all settings.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -788,7 +785,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
titleRow.style.height = StyleKeyword.Auto;
|
||||
titleRow.style.minHeight = StyleKeyword.Null;
|
||||
titleRow.style.maxHeight = StyleKeyword.Null;
|
||||
var title = new Label("프리셋 설정")
|
||||
var title = new Label("Preset Settings")
|
||||
{
|
||||
style =
|
||||
{
|
||||
@@ -877,7 +874,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
var saveRow = CreateRow();
|
||||
saveRow.style.marginBottom = 20;
|
||||
|
||||
var nameLabelLabel = CreateFormLabel("새 프리셋 이름");
|
||||
var nameLabelLabel = CreateFormLabel("New Preset Name");
|
||||
nameLabelLabel.style.marginRight = 10;
|
||||
|
||||
var nameField = new TextField
|
||||
@@ -890,7 +887,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
}
|
||||
};
|
||||
|
||||
// 기존 폼 입력 필드 스타일과 맞춤
|
||||
// Match existing form input field style
|
||||
var textInput = nameField.Q("unity-text-input");
|
||||
if (textInput != null)
|
||||
{
|
||||
@@ -919,7 +916,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
nameField.style.borderBottomRightRadius = 6f;
|
||||
}
|
||||
|
||||
var saveBtn = new Button { text = "저장" };
|
||||
var saveBtn = new Button { text = "Save" };
|
||||
|
||||
saveBtn.RegisterCallback<ClickEvent>(_ =>
|
||||
{
|
||||
@@ -927,9 +924,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
if (string.IsNullOrWhiteSpace(presetName))
|
||||
{
|
||||
CommonWarningDialogUI.ShowDialog(
|
||||
"저장 실패",
|
||||
"프리셋 이름을 입력해 주세요.",
|
||||
new DialogButton("확인", () => {})
|
||||
"Save Failed",
|
||||
"Please enter a preset name.",
|
||||
new DialogButton("OK", () => {})
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -937,9 +934,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
if (!ValidateInputs())
|
||||
{
|
||||
CommonWarningDialogUI.ShowDialog(
|
||||
"저장 실패",
|
||||
"필수 입력 값이 비어 있거나 올바르지 않아 프리셋을 저장할 수 없습니다.",
|
||||
new DialogButton("확인", () => {})
|
||||
"Save Failed",
|
||||
"Cannot save preset because required input values are empty or invalid.",
|
||||
new DialogButton("OK", () => {})
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -973,9 +970,9 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
catch (Exception ex)
|
||||
{
|
||||
CommonWarningDialogUI.ShowDialog(
|
||||
"저장 실패",
|
||||
$"프리셋 저장 중 오류가 발생했습니다: {ex.Message}",
|
||||
new DialogButton("확인", () => {})
|
||||
"Save Failed",
|
||||
$"An error occurred while saving the preset: {ex.Message}",
|
||||
new DialogButton("OK", () => {})
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -988,7 +985,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
// Bottom controls: Close Button
|
||||
var closeRow = CreateRow();
|
||||
|
||||
var closeBtn = new Button { text = "닫기" };
|
||||
var closeBtn = new Button { text = "Close" };
|
||||
|
||||
closeBtn.RegisterCallback<ClickEvent>(_ =>
|
||||
{
|
||||
@@ -1015,7 +1012,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
emptyRow.style.minHeight = StyleKeyword.Null;
|
||||
emptyRow.style.maxHeight = StyleKeyword.Null;
|
||||
|
||||
var emptyLabel = new Label("저장된 프리셋이 없습니다.") { style = { color = new StyleColor(Color.gray), unityTextAlign = TextAnchor.MiddleCenter, marginTop = 80, fontSize = 20 } };
|
||||
var emptyLabel = new Label("No saved presets.") { style = { color = new StyleColor(Color.gray), unityTextAlign = TextAnchor.MiddleCenter, marginTop = 80, fontSize = 20 } };
|
||||
emptyRow.Add(emptyLabel);
|
||||
scrollView.Add(emptyRow);
|
||||
}
|
||||
@@ -1045,7 +1042,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
|
||||
var loadBtn = new Button
|
||||
{
|
||||
text = "불러오기",
|
||||
text = "Load",
|
||||
style =
|
||||
{
|
||||
marginRight = 10,
|
||||
@@ -1085,7 +1082,7 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
|
||||
var deleteBtn = new Button
|
||||
{
|
||||
text = "삭제",
|
||||
text = "Delete",
|
||||
style =
|
||||
{
|
||||
width = 120f,
|
||||
@@ -1116,11 +1113,11 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
|
||||
deleteBtn.RegisterCallback<ClickEvent>(_ =>
|
||||
{
|
||||
CommonWarningDialogUI.ShowDialog("프리셋 삭제", $"'{preset.Name}' 프리셋을 정말 삭제하시겠습니까?", new DialogButton("예", () =>
|
||||
CommonWarningDialogUI.ShowDialog("Delete Preset", $"Are you sure you want to delete the preset '{preset.Name}'?", new DialogButton("Yes", () =>
|
||||
{
|
||||
PresetManager.DeletePreset(preset.Name);
|
||||
RefreshPresets();
|
||||
}), new DialogButton("아니오", () => { }));
|
||||
}), new DialogButton("No", () => { }));
|
||||
});
|
||||
|
||||
btnContainer.Add(loadBtn);
|
||||
|
||||
Reference in new issue
Block a user