增加ControllerDefion引用直接生效效果
This commit is contained in:
parent
005899c17c
commit
68566ef5d5
@ -19,6 +19,7 @@ namespace AlicizaX.UI
|
|||||||
[SerializeField] private int _length = 2;
|
[SerializeField] private int _length = 2;
|
||||||
[SerializeField] private string _description = string.Empty;
|
[SerializeField] private string _description = string.Empty;
|
||||||
[NonSerialized] private int _selectedIndex = -1;
|
[NonSerialized] private int _selectedIndex = -1;
|
||||||
|
[NonSerialized] private UXController _owner;
|
||||||
|
|
||||||
public string Id => _id;
|
public string Id => _id;
|
||||||
|
|
||||||
@ -43,7 +44,16 @@ namespace AlicizaX.UI
|
|||||||
public int SelectedIndex
|
public int SelectedIndex
|
||||||
{
|
{
|
||||||
get => _selectedIndex;
|
get => _selectedIndex;
|
||||||
internal set => _selectedIndex = value;
|
set
|
||||||
|
{
|
||||||
|
if (_owner == null)
|
||||||
|
{
|
||||||
|
SetSelectedIndexSilently(Mathf.Clamp(value, 0, Length - 1));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_owner.SetControllerIndexInternal(this, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void EnsureId()
|
internal void EnsureId()
|
||||||
@ -53,6 +63,16 @@ namespace AlicizaX.UI
|
|||||||
_id = Guid.NewGuid().ToString("N");
|
_id = Guid.NewGuid().ToString("N");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void SetOwner(UXController owner)
|
||||||
|
{
|
||||||
|
_owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetSelectedIndexSilently(int selectedIndex)
|
||||||
|
{
|
||||||
|
_selectedIndex = selectedIndex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[SerializeField] private List<ControllerDefinition> _controllers = new List<ControllerDefinition>();
|
[SerializeField] private List<ControllerDefinition> _controllers = new List<ControllerDefinition>();
|
||||||
@ -61,7 +81,14 @@ namespace AlicizaX.UI
|
|||||||
private readonly Dictionary<string, int> _controllerIdMap = new Dictionary<string, int>();
|
private readonly Dictionary<string, int> _controllerIdMap = new Dictionary<string, int>();
|
||||||
private readonly Dictionary<string, int> _controllerNameMap = new Dictionary<string, int>();
|
private readonly Dictionary<string, int> _controllerNameMap = new Dictionary<string, int>();
|
||||||
|
|
||||||
public IReadOnlyList<ControllerDefinition> Controllers => _controllers;
|
public IReadOnlyList<ControllerDefinition> Controllers
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
EnsureInitialized();
|
||||||
|
return _controllers;
|
||||||
|
}
|
||||||
|
}
|
||||||
public IReadOnlyList<UXBinding> Bindings => _bindings;
|
public IReadOnlyList<UXBinding> Bindings => _bindings;
|
||||||
public int ControllerCount => _controllers.Count;
|
public int ControllerCount => _controllers.Count;
|
||||||
|
|
||||||
@ -103,6 +130,8 @@ namespace AlicizaX.UI
|
|||||||
|
|
||||||
public ControllerDefinition GetControllerAt(int index)
|
public ControllerDefinition GetControllerAt(int index)
|
||||||
{
|
{
|
||||||
|
EnsureInitialized();
|
||||||
|
|
||||||
if (index < 0 || index >= _controllers.Count)
|
if (index < 0 || index >= _controllers.Count)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
@ -243,7 +272,8 @@ namespace AlicizaX.UI
|
|||||||
}
|
}
|
||||||
|
|
||||||
controller.EnsureId();
|
controller.EnsureId();
|
||||||
controller.SelectedIndex = Mathf.Clamp(controller.SelectedIndex, -1, controller.Length - 1);
|
controller.SetOwner(this);
|
||||||
|
controller.SetSelectedIndexSilently(Mathf.Clamp(controller.SelectedIndex, -1, controller.Length - 1));
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(controller.Name))
|
if (string.IsNullOrWhiteSpace(controller.Name))
|
||||||
{
|
{
|
||||||
@ -285,7 +315,7 @@ namespace AlicizaX.UI
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
controller.SelectedIndex = selectedIndex;
|
controller.SetSelectedIndexSilently(selectedIndex);
|
||||||
NotifyBindings(controller.Id, selectedIndex);
|
NotifyBindings(controller.Id, selectedIndex);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user