Storyline+Dialog初步
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace SubAssetsToolbox.Editor
|
||||
{
|
||||
internal class RenameSubAssetWindow : EditorWindow
|
||||
{
|
||||
[SerializeField] private VisualTreeAsset _visualTreeAsset;
|
||||
|
||||
private Object _target;
|
||||
private TextField _nameField;
|
||||
private Button _renameButton;
|
||||
|
||||
public static void Open(Object subAsset)
|
||||
{
|
||||
RenameSubAssetWindow window = GetWindow<RenameSubAssetWindow>(true, "Rename Sub-Asset");
|
||||
window._target = subAsset;
|
||||
window.minSize = new Vector2(300f, 70f);
|
||||
window.maxSize = new Vector2(300f, 70f);
|
||||
window.Populate();
|
||||
window.Show();
|
||||
}
|
||||
|
||||
private void CreateGUI()
|
||||
{
|
||||
VisualElement root = rootVisualElement;
|
||||
VisualElement template = _visualTreeAsset.Instantiate();
|
||||
template.style.flexGrow = 1f;
|
||||
|
||||
_nameField = template.Q<TextField>("NameField");
|
||||
_nameField.selectAllOnFocus = true;
|
||||
_nameField.RegisterValueChangedCallback(_ => UpdateRenameButton());
|
||||
_nameField.RegisterCallback<KeyUpEvent>(OnKeyUp);
|
||||
|
||||
template.Q<Button>("CancelBtn").clicked += Close;
|
||||
_renameButton = template.Q<Button>("RenameBtn");
|
||||
_renameButton.clicked += PerformRename;
|
||||
|
||||
root.Add(template);
|
||||
UpdateRenameButton();
|
||||
}
|
||||
|
||||
private void OnKeyUp(KeyUpEvent evt)
|
||||
{
|
||||
switch (evt.keyCode)
|
||||
{
|
||||
case KeyCode.Return:
|
||||
case KeyCode.KeypadEnter:
|
||||
PerformRename();
|
||||
break;
|
||||
|
||||
case KeyCode.Escape:
|
||||
Close();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void Populate()
|
||||
{
|
||||
_nameField.value = _target != null ? _target.name : "";
|
||||
UpdateRenameButton();
|
||||
_nameField.schedule.Execute(() =>
|
||||
{
|
||||
_nameField.Focus();
|
||||
_nameField.SelectAll();
|
||||
});
|
||||
}
|
||||
|
||||
private void UpdateRenameButton()
|
||||
{
|
||||
bool valid = _target != null
|
||||
&& !string.IsNullOrWhiteSpace(_nameField.value)
|
||||
&& _nameField.value != _target.name;
|
||||
|
||||
_renameButton.SetEnabled(valid);
|
||||
}
|
||||
|
||||
private void PerformRename()
|
||||
{
|
||||
_target.name = _nameField.value;
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user