add InputReader
#add -ReadButton -ReadOnce -ReadInput -ReadTog
This commit is contained in:
parent
ca4d33698f
commit
88af70ff61
@ -0,0 +1,221 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
public static class InputActionReader
|
||||
{
|
||||
private readonly struct InputReadKey : IEquatable<InputReadKey>
|
||||
{
|
||||
public readonly string ActionName;
|
||||
public readonly int OwnerId;
|
||||
public readonly string OwnerKey;
|
||||
|
||||
public InputReadKey(string actionName, int ownerId)
|
||||
{
|
||||
ActionName = actionName ?? string.Empty;
|
||||
OwnerId = ownerId;
|
||||
OwnerKey = string.Empty;
|
||||
}
|
||||
|
||||
public InputReadKey(string actionName, string ownerKey)
|
||||
{
|
||||
ActionName = actionName ?? string.Empty;
|
||||
OwnerId = 0;
|
||||
OwnerKey = ownerKey ?? string.Empty;
|
||||
}
|
||||
|
||||
public bool Equals(InputReadKey other)
|
||||
{
|
||||
return OwnerId == other.OwnerId
|
||||
&& string.Equals(ActionName, other.ActionName, StringComparison.Ordinal)
|
||||
&& string.Equals(OwnerKey, other.OwnerKey, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj is InputReadKey other && Equals(other);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
unchecked
|
||||
{
|
||||
int hashCode = 17;
|
||||
hashCode = (hashCode * 31) + OwnerId;
|
||||
hashCode = (hashCode * 31) + StringComparer.Ordinal.GetHashCode(ActionName);
|
||||
hashCode = (hashCode * 31) + StringComparer.Ordinal.GetHashCode(OwnerKey);
|
||||
return hashCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly HashSet<InputReadKey> PressedKeys = new();
|
||||
private static readonly HashSet<InputReadKey> ToggledKeys = new();
|
||||
|
||||
public static T ReadValue<T>(string actionName) where T : struct
|
||||
{
|
||||
return ResolveAction(actionName).ReadValue<T>();
|
||||
}
|
||||
|
||||
public static object ReadValue(string actionName)
|
||||
{
|
||||
return ResolveAction(actionName).ReadValueAsObject();
|
||||
}
|
||||
|
||||
public static bool TryReadValue<T>(string actionName, out T value) where T : struct
|
||||
{
|
||||
InputAction inputAction = ResolveAction(actionName);
|
||||
if (inputAction.IsPressed())
|
||||
{
|
||||
value = inputAction.ReadValue<T>();
|
||||
return true;
|
||||
}
|
||||
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool TryReadValue(string actionName, out object value)
|
||||
{
|
||||
InputAction inputAction = ResolveAction(actionName);
|
||||
if (inputAction.IsPressed())
|
||||
{
|
||||
value = inputAction.ReadValueAsObject();
|
||||
return true;
|
||||
}
|
||||
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool TryReadValueOnce<T>(UnityEngine.Object owner, string actionName, out T value) where T : struct
|
||||
{
|
||||
if (owner == null)
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
return TryReadValueOnceInternal(new InputReadKey(actionName, owner.GetInstanceID()), actionName, out value);
|
||||
}
|
||||
|
||||
public static bool ReadButton(string actionName)
|
||||
{
|
||||
InputAction inputAction = ResolveAction(actionName);
|
||||
if (inputAction.type == InputActionType.Button)
|
||||
{
|
||||
return Convert.ToBoolean(inputAction.ReadValueAsObject());
|
||||
}
|
||||
|
||||
throw new NotSupportedException("[InputActionReader] The Input Action must be a button type.");
|
||||
}
|
||||
|
||||
public static bool ReadButtonOnce(UnityEngine.Object owner, string actionName)
|
||||
{
|
||||
return owner != null && ReadButtonOnce(owner.GetInstanceID(), actionName);
|
||||
}
|
||||
|
||||
public static bool ReadButtonOnce(int instanceID, string actionName)
|
||||
{
|
||||
return ReadButtonOnceInternal(new InputReadKey(actionName, instanceID), actionName);
|
||||
}
|
||||
|
||||
public static bool ReadButtonOnce(string key, string actionName)
|
||||
{
|
||||
return ReadButtonOnceInternal(new InputReadKey(actionName, key), actionName);
|
||||
}
|
||||
|
||||
public static bool ReadButtonToggle(UnityEngine.Object owner, string actionName)
|
||||
{
|
||||
return owner != null && ReadButtonToggle(owner.GetInstanceID(), actionName);
|
||||
}
|
||||
|
||||
public static bool ReadButtonToggle(int instanceID, string actionName)
|
||||
{
|
||||
return ReadButtonToggleInternal(new InputReadKey(actionName, instanceID), actionName);
|
||||
}
|
||||
|
||||
public static bool ReadButtonToggle(string key, string actionName)
|
||||
{
|
||||
return ReadButtonToggleInternal(new InputReadKey(actionName, key), actionName);
|
||||
}
|
||||
|
||||
public static void ResetToggledButton(string key, string actionName)
|
||||
{
|
||||
ToggledKeys.Remove(new InputReadKey(actionName, key));
|
||||
}
|
||||
|
||||
public static void ResetToggledButton(string actionName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(actionName) || ToggledKeys.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
InputReadKey[] snapshot = new InputReadKey[ToggledKeys.Count];
|
||||
ToggledKeys.CopyTo(snapshot);
|
||||
for (int i = 0; i < snapshot.Length; i++)
|
||||
{
|
||||
if (string.Equals(snapshot[i].ActionName, actionName, StringComparison.Ordinal))
|
||||
{
|
||||
ToggledKeys.Remove(snapshot[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ResetToggledButtons()
|
||||
{
|
||||
ToggledKeys.Clear();
|
||||
}
|
||||
|
||||
private static InputAction ResolveAction(string actionName)
|
||||
{
|
||||
return InputBindingManager.Action(actionName)
|
||||
?? throw new InvalidOperationException($"[InputActionReader] Action '{actionName}' is not available.");
|
||||
}
|
||||
|
||||
private static bool TryReadValueOnceInternal<T>(InputReadKey readKey, string actionName, out T value) where T : struct
|
||||
{
|
||||
InputAction inputAction = ResolveAction(actionName);
|
||||
if (inputAction.IsPressed())
|
||||
{
|
||||
if (PressedKeys.Add(readKey))
|
||||
{
|
||||
value = inputAction.ReadValue<T>();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PressedKeys.Remove(readKey);
|
||||
}
|
||||
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool ReadButtonOnceInternal(InputReadKey readKey, string actionName)
|
||||
{
|
||||
if (ReadButton(actionName))
|
||||
{
|
||||
return PressedKeys.Add(readKey);
|
||||
}
|
||||
|
||||
PressedKeys.Remove(readKey);
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool ReadButtonToggleInternal(InputReadKey readKey, string actionName)
|
||||
{
|
||||
if (ReadButtonOnceInternal(readKey, actionName))
|
||||
{
|
||||
if (!ToggledKeys.Add(readKey))
|
||||
{
|
||||
ToggledKeys.Remove(readKey);
|
||||
}
|
||||
}
|
||||
|
||||
return ToggledKeys.Contains(readKey);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b9368556ed4729ae618e0a19d3a7925b
|
||||
timeCreated: 1773811724
|
||||
@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using AlicizaX;
|
||||
@ -24,16 +22,15 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
public string fileName = "input_bindings.json";
|
||||
public bool debugMode = false;
|
||||
|
||||
public Dictionary<string, ActionMap> actionMap = new Dictionary<string, ActionMap>();
|
||||
public HashSet<RebindContext> preparedRebinds = new HashSet<RebindContext>();
|
||||
|
||||
internal InputActionRebindingExtensions.RebindingOperation rebindOperation;
|
||||
private bool isApplyPending = false;
|
||||
private string defaultBindingsJson = string.Empty;
|
||||
private string cachedSavePath;
|
||||
private Dictionary<string, (ActionMap map, ActionMap.Action action)> actionLookup = new Dictionary<string, (ActionMap, ActionMap.Action)>();
|
||||
|
||||
// 用于替代 Rx.NET Subjects 的事件
|
||||
private readonly Dictionary<string, ActionMap> actionMap = new(StringComparer.Ordinal);
|
||||
private readonly HashSet<RebindContext> preparedRebinds = new();
|
||||
private readonly Dictionary<string, (ActionMap map, ActionMap.Action action)> actionLookup = new(StringComparer.Ordinal);
|
||||
private readonly Dictionary<Guid, (ActionMap map, ActionMap.Action action)> actionLookupById = new();
|
||||
private readonly HashSet<string> ambiguousActionNames = new(StringComparer.Ordinal);
|
||||
private event Action _onInputsInit;
|
||||
|
||||
public event Action OnInputsInit
|
||||
@ -59,6 +56,9 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
|
||||
private bool isInputsInitialized = false;
|
||||
|
||||
public IReadOnlyDictionary<string, ActionMap> ActionMaps => actionMap;
|
||||
public IReadOnlyCollection<RebindContext> PreparedRebinds => preparedRebinds;
|
||||
|
||||
public string SavePath
|
||||
{
|
||||
get
|
||||
@ -160,38 +160,48 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
|
||||
private void BuildActionMap()
|
||||
{
|
||||
// 预分配已知容量以避免调整大小
|
||||
int mapCount = actions.actionMaps.Count;
|
||||
actionMap.Clear();
|
||||
actionLookup.Clear();
|
||||
|
||||
// 估算总操作数以便更好地分配内存
|
||||
int estimatedActionCount = 0;
|
||||
foreach (var map in actions.actionMaps)
|
||||
{
|
||||
estimatedActionCount += map.actions.Count;
|
||||
}
|
||||
|
||||
// 确保容量以避免重新哈希
|
||||
if (actionMap.Count == 0)
|
||||
{
|
||||
actionMap = new Dictionary<string, ActionMap>(mapCount);
|
||||
actionLookup = new Dictionary<string, (ActionMap, ActionMap.Action)>(estimatedActionCount);
|
||||
}
|
||||
actionLookupById.Clear();
|
||||
ambiguousActionNames.Clear();
|
||||
|
||||
foreach (var map in actions.actionMaps)
|
||||
{
|
||||
var actionMapObj = new ActionMap(map);
|
||||
actionMap.Add(map.name, actionMapObj);
|
||||
|
||||
// 构建查找字典以实现 O(1) 操作访问
|
||||
foreach (var actionPair in actionMapObj.actions)
|
||||
{
|
||||
actionLookup[actionPair.Key] = (actionMapObj, actionPair.Value);
|
||||
RegisterActionLookup(map.name, actionPair.Key, actionMapObj, actionPair.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RegisterActionLookup(string mapName, string actionName, ActionMap map, ActionMap.Action action)
|
||||
{
|
||||
actionLookupById[action.action.id] = (map, action);
|
||||
actionLookup[$"{mapName}/{actionName}"] = (map, action);
|
||||
|
||||
if (ambiguousActionNames.Contains(actionName))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (actionLookup.TryGetValue(actionName, out var existing))
|
||||
{
|
||||
if (existing.action.action != action.action)
|
||||
{
|
||||
actionLookup.Remove(actionName);
|
||||
ambiguousActionNames.Add(actionName);
|
||||
Debug.LogWarning($"[InputBindingManager] Duplicate action name '{actionName}' detected. Use 'MapName/{actionName}' to resolve it.");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
actionLookup[actionName] = (map, action);
|
||||
}
|
||||
|
||||
private void RefreshBindingPathsFromActions()
|
||||
{
|
||||
foreach (var mapPair in actionMap.Values)
|
||||
@ -346,16 +356,26 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
{
|
||||
if (obj is not RebindContext other) return false;
|
||||
if (action == null || other.action == null) return false;
|
||||
return action.name == other.action.name && bindingIndex == other.bindingIndex;
|
||||
return action.id == other.action.id && bindingIndex == other.bindingIndex;
|
||||
}
|
||||
|
||||
public override int GetHashCode() => (action?.name ?? string.Empty, bindingIndex).GetHashCode();
|
||||
public override int GetHashCode()
|
||||
{
|
||||
unchecked
|
||||
{
|
||||
int hashCode = 17;
|
||||
hashCode = (hashCode * 31) + (action != null ? action.id.GetHashCode() : 0);
|
||||
hashCode = (hashCode * 31) + bindingIndex;
|
||||
return hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (cachedToString == null && action != null)
|
||||
{
|
||||
cachedToString = $"{action.name}:{bindingIndex}";
|
||||
string mapName = action.actionMap != null ? action.actionMap.name : "<no-map>";
|
||||
cachedToString = $"{mapName}/{action.name}:{bindingIndex}";
|
||||
}
|
||||
|
||||
return cachedToString ?? "<null>";
|
||||
@ -374,15 +394,40 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
var instance = Instance;
|
||||
if (instance == null) return null;
|
||||
|
||||
if (instance.actionLookup.TryGetValue(actionName, out var result))
|
||||
if (TryGetAction(actionName, out InputAction action))
|
||||
{
|
||||
return result.action.action;
|
||||
return action;
|
||||
}
|
||||
|
||||
if (instance.ambiguousActionNames.Contains(actionName))
|
||||
{
|
||||
Debug.LogError($"[InputBindingManager] Action name '{actionName}' is ambiguous. Use 'MapName/{actionName}' instead.");
|
||||
return null;
|
||||
}
|
||||
|
||||
Debug.LogError($"[InputBindingManager] Could not find action '{actionName}'");
|
||||
return null;
|
||||
}
|
||||
|
||||
public static bool TryGetAction(string actionName, out InputAction action)
|
||||
{
|
||||
var instance = Instance;
|
||||
if (instance == null || string.IsNullOrWhiteSpace(actionName))
|
||||
{
|
||||
action = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (instance.actionLookup.TryGetValue(actionName, out var result))
|
||||
{
|
||||
action = result.action.action;
|
||||
return true;
|
||||
}
|
||||
|
||||
action = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始重新绑定指定的输入操作
|
||||
/// </summary>
|
||||
@ -443,7 +488,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
}
|
||||
}
|
||||
|
||||
var bp = GetBindingPath(ctx.action.name, ctx.bindingIndex);
|
||||
var bp = GetBindingPath(ctx.action, ctx.bindingIndex);
|
||||
if (bp != null)
|
||||
{
|
||||
bp.EffectivePath = (ctx.overridePath == NULL_BINDING) ? string.Empty : ctx.overridePath;
|
||||
@ -607,11 +652,11 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
|
||||
if (string.IsNullOrEmpty(context.overridePath))
|
||||
{
|
||||
var bp = GetBindingPath(context.action.name, context.bindingIndex);
|
||||
var bp = GetBindingPath(context.action, context.bindingIndex);
|
||||
if (bp != null) context.overridePath = bp.bindingPath;
|
||||
}
|
||||
|
||||
var bindingPath = GetBindingPath(context.action.name, context.bindingIndex);
|
||||
var bindingPath = GetBindingPath(context.action, context.bindingIndex);
|
||||
if (bindingPath == null) return;
|
||||
|
||||
if (bindingPath.EffectivePath != context.overridePath)
|
||||
@ -695,17 +740,45 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
|
||||
var instance = Instance;
|
||||
if (instance == null) return null;
|
||||
|
||||
if (instance.actionLookup.TryGetValue(actionName, out var result))
|
||||
if (instance.TryGetActionRecord(actionName, out var result)
|
||||
&& result.action.bindings.TryGetValue(bindingIndex, out var binding))
|
||||
{
|
||||
if (result.action.bindings.TryGetValue(bindingIndex, out var binding))
|
||||
{
|
||||
return binding.bindingPath;
|
||||
}
|
||||
return binding.bindingPath;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static BindingPath GetBindingPath(InputAction action, int bindingIndex = 0)
|
||||
{
|
||||
var instance = Instance;
|
||||
if (instance == null || action == null) return null;
|
||||
|
||||
if (instance.TryGetActionRecord(action, out var result)
|
||||
&& result.action.bindings.TryGetValue(bindingIndex, out var binding))
|
||||
{
|
||||
return binding.bindingPath;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private bool TryGetActionRecord(string actionName, out (ActionMap map, ActionMap.Action action) result)
|
||||
{
|
||||
return actionLookup.TryGetValue(actionName, out result);
|
||||
}
|
||||
|
||||
private bool TryGetActionRecord(InputAction action, out (ActionMap map, ActionMap.Action action) result)
|
||||
{
|
||||
if (action != null && actionLookupById.TryGetValue(action.id, out result))
|
||||
{
|
||||
return result.action.action == action;
|
||||
}
|
||||
|
||||
result = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// 为键盘选择最佳绑定索引;如果 compositePartName != null 则查找部分
|
||||
/// <summary>
|
||||
|
||||
@ -14,16 +14,16 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
m_PixelRect:
|
||||
serializedVersion: 2
|
||||
x: -4
|
||||
y: 51
|
||||
x: 0
|
||||
y: 43
|
||||
width: 1920
|
||||
height: 997
|
||||
m_ShowMode: 4
|
||||
m_Title: Project
|
||||
m_Title: Console
|
||||
m_RootView: {fileID: 4}
|
||||
m_MinSize: {x: 875, y: 300}
|
||||
m_MaxSize: {x: 10000, y: 10000}
|
||||
m_Maximized: 0
|
||||
m_Maximized: 1
|
||||
--- !u!114 &2
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
@ -34,23 +34,23 @@ MonoBehaviour:
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name: AnimatorControllerTool
|
||||
m_Name: GameView
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 566
|
||||
width: 614
|
||||
width: 338
|
||||
height: 381
|
||||
m_MinSize: {x: 101, y: 121}
|
||||
m_MinSize: {x: 51, y: 71}
|
||||
m_MaxSize: {x: 4001, y: 4021}
|
||||
m_ActualView: {fileID: 15}
|
||||
m_ActualView: {fileID: 14}
|
||||
m_Panes:
|
||||
- {fileID: 14}
|
||||
- {fileID: 15}
|
||||
m_Selected: 1
|
||||
m_LastSelected: 0
|
||||
m_Selected: 0
|
||||
m_LastSelected: 1
|
||||
--- !u!114 &3
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
@ -70,12 +70,12 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 614
|
||||
width: 338
|
||||
height: 947
|
||||
m_MinSize: {x: 100, y: 100}
|
||||
m_MaxSize: {x: 8096, y: 16192}
|
||||
vertical: 1
|
||||
controlID: 398
|
||||
controlID: 18
|
||||
draggingID: 0
|
||||
--- !u!114 &4
|
||||
MonoBehaviour:
|
||||
@ -174,7 +174,7 @@ MonoBehaviour:
|
||||
m_MinSize: {x: 400, y: 100}
|
||||
m_MaxSize: {x: 32384, y: 16192}
|
||||
vertical: 0
|
||||
controlID: 144
|
||||
controlID: 142
|
||||
draggingID: 0
|
||||
--- !u!114 &8
|
||||
MonoBehaviour:
|
||||
@ -193,7 +193,7 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 614
|
||||
width: 338
|
||||
height: 566
|
||||
m_MinSize: {x: 201, y: 221}
|
||||
m_MaxSize: {x: 4001, y: 4021}
|
||||
@ -219,14 +219,14 @@ MonoBehaviour:
|
||||
- {fileID: 11}
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 614
|
||||
x: 338
|
||||
y: 0
|
||||
width: 363
|
||||
width: 382
|
||||
height: 947
|
||||
m_MinSize: {x: 100, y: 100}
|
||||
m_MaxSize: {x: 8096, y: 16192}
|
||||
vertical: 1
|
||||
controlID: 73
|
||||
controlID: 69
|
||||
draggingID: 0
|
||||
--- !u!114 &10
|
||||
MonoBehaviour:
|
||||
@ -245,7 +245,7 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 363
|
||||
width: 382
|
||||
height: 409
|
||||
m_MinSize: {x: 202, y: 221}
|
||||
m_MaxSize: {x: 4002, y: 4021}
|
||||
@ -271,7 +271,7 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 409
|
||||
width: 363
|
||||
width: 382
|
||||
height: 538
|
||||
m_MinSize: {x: 102, y: 121}
|
||||
m_MaxSize: {x: 4002, y: 4021}
|
||||
@ -295,9 +295,9 @@ MonoBehaviour:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 977
|
||||
x: 720
|
||||
y: 0
|
||||
width: 369
|
||||
width: 416
|
||||
height: 947
|
||||
m_MinSize: {x: 232, y: 271}
|
||||
m_MaxSize: {x: 10002, y: 10021}
|
||||
@ -321,9 +321,9 @@ MonoBehaviour:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 1346
|
||||
x: 1136
|
||||
y: 0
|
||||
width: 574
|
||||
width: 784
|
||||
height: 947
|
||||
m_MinSize: {x: 276, y: 71}
|
||||
m_MaxSize: {x: 4001, y: 4021}
|
||||
@ -354,7 +354,7 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 639
|
||||
width: 496
|
||||
width: 337
|
||||
height: 360
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -372,7 +372,7 @@ MonoBehaviour:
|
||||
m_ShowGizmos: 0
|
||||
m_TargetDisplay: 0
|
||||
m_ClearColor: {r: 0, g: 0, b: 0, a: 0}
|
||||
m_TargetSize: {x: 2560, y: 1440}
|
||||
m_TargetSize: {x: 1920, y: 1080}
|
||||
m_TextureFilterMode: 0
|
||||
m_TextureHideFlags: 61
|
||||
m_RenderIMGUI: 1
|
||||
@ -381,16 +381,16 @@ MonoBehaviour:
|
||||
m_VSyncEnabled: 0
|
||||
m_Gizmos: 0
|
||||
m_Stats: 1
|
||||
m_SelectedSizes: 05000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m_SelectedSizes: 03000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m_ZoomArea:
|
||||
m_HRangeLocked: 0
|
||||
m_VRangeLocked: 0
|
||||
hZoomLockedByDefault: 0
|
||||
vZoomLockedByDefault: 0
|
||||
m_HBaseRangeMin: -1280
|
||||
m_HBaseRangeMax: 1280
|
||||
m_VBaseRangeMin: -720
|
||||
m_VBaseRangeMax: 720
|
||||
m_HBaseRangeMin: -960
|
||||
m_HBaseRangeMax: 960
|
||||
m_VBaseRangeMin: -540
|
||||
m_VBaseRangeMax: 540
|
||||
m_HAllowExceedBaseRangeMin: 1
|
||||
m_HAllowExceedBaseRangeMax: 1
|
||||
m_VAllowExceedBaseRangeMin: 1
|
||||
@ -408,23 +408,23 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 21
|
||||
width: 496
|
||||
width: 337
|
||||
height: 339
|
||||
m_Scale: {x: 0.19375, y: 0.19375}
|
||||
m_Translation: {x: 248, y: 169.5}
|
||||
m_Scale: {x: 0.17552084, y: 0.17552084}
|
||||
m_Translation: {x: 168.5, y: 169.5}
|
||||
m_MarginLeft: 0
|
||||
m_MarginRight: 0
|
||||
m_MarginTop: 0
|
||||
m_MarginBottom: 0
|
||||
m_LastShownAreaInsideMargins:
|
||||
serializedVersion: 2
|
||||
x: -1280
|
||||
y: -874.83875
|
||||
width: 2560
|
||||
height: 1749.6775
|
||||
x: -960
|
||||
y: -965.6973
|
||||
width: 1920
|
||||
height: 1931.3947
|
||||
m_MinimalGUI: 1
|
||||
m_defaultScale: 0.19375
|
||||
m_LastWindowPixelSize: {x: 496, y: 360}
|
||||
m_defaultScale: 0.17552084
|
||||
m_LastWindowPixelSize: {x: 337, y: 360}
|
||||
m_ClearInEditMode: 1
|
||||
m_NoCameraWarning: 1
|
||||
m_LowResolutionForAspectRatios: 01000000000000000000
|
||||
@ -450,9 +450,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: -4
|
||||
y: 647
|
||||
width: 613
|
||||
x: 0
|
||||
y: 639
|
||||
width: 491
|
||||
height: 360
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -520,9 +520,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: -4
|
||||
y: 81
|
||||
width: 613
|
||||
x: 0
|
||||
y: 73
|
||||
width: 337
|
||||
height: 545
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -1114,7 +1114,7 @@ MonoBehaviour:
|
||||
m_Rotation:
|
||||
m_Target: {x: -0.21037178, y: -0.10913931, z: 0.02363893, w: -0.97122556}
|
||||
speed: 2
|
||||
m_Value: {x: -0.21037178, y: -0.10913931, z: 0.023638932, w: -0.9712256}
|
||||
m_Value: {x: -0.2103712, y: -0.10913901, z: 0.023638865, w: -0.9712229}
|
||||
m_Size:
|
||||
m_Target: 1.0281526
|
||||
speed: 2
|
||||
@ -1136,7 +1136,7 @@ MonoBehaviour:
|
||||
m_FarClip: 10000
|
||||
m_DynamicClip: 1
|
||||
m_OcclusionCulling: 0
|
||||
m_LastSceneViewRotation: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
|
||||
m_LastSceneViewRotation: {x: -0.21037178, y: -0.10913931, z: 0.02363893, w: -0.97122556}
|
||||
m_LastSceneViewOrtho: 0
|
||||
m_ReplacementShader: {fileID: 0}
|
||||
m_ReplacementString:
|
||||
@ -1163,9 +1163,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 610
|
||||
y: 81
|
||||
width: 361
|
||||
x: 338
|
||||
y: 73
|
||||
width: 380
|
||||
height: 388
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -1180,7 +1180,7 @@ MonoBehaviour:
|
||||
m_SceneHierarchy:
|
||||
m_TreeViewState:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs: d6700000
|
||||
m_SelectedIDs: 08700000
|
||||
m_LastClickedID: 0
|
||||
m_ExpandedIDs: 28fbffff
|
||||
m_RenameOverlay:
|
||||
@ -1226,9 +1226,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 610
|
||||
y: 490
|
||||
width: 361
|
||||
x: 338
|
||||
y: 482
|
||||
width: 380
|
||||
height: 517
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -1260,9 +1260,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 973
|
||||
y: 81
|
||||
width: 367
|
||||
x: 720
|
||||
y: 73
|
||||
width: 414
|
||||
height: 926
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -1285,7 +1285,7 @@ MonoBehaviour:
|
||||
m_SkipHidden: 0
|
||||
m_SearchArea: 2
|
||||
m_Folders:
|
||||
- Assets/Plugins/UnityEditorDarkMode
|
||||
- Assets/YooAsset
|
||||
m_Globs: []
|
||||
m_OriginalText:
|
||||
m_ImportLogFlags: 0
|
||||
@ -1301,7 +1301,7 @@ MonoBehaviour:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs: e48c0000
|
||||
m_LastClickedID: 36068
|
||||
m_ExpandedIDs: 000000007e0200008a0d0000786d00007a6d00007c6d00007e6d0000806d0000826d0000846d0000866d0000886d00008a6d00008c6d00008e6d0000906d0000926d0000946d0000966d0000986d00009a6d00009c6d00009e6d0000a06d0000a26d0000a46d0000a66d0000a86d0000aa6d0000ac6d0000ae6d0000b06d0000b26d0000b46d0000b66d0000b86d0000ba6d0000bc6d0000be6d0000c06d0000c26d0000c46d0000c66d0000c86d0000ca6d0000cc6d0000ce6d0000d06d0000d26d0000d46d0000d66d0000d86d0000da6d0000dc6d0000de6d0000e06d0000e26d0000e46d0000e66d0000e86d0000ea6d0000ec6d0000ee6d0000f06d0000f26d0000f46d0000
|
||||
m_ExpandedIDs: 000000007e0200007c6d00007e6d0000806d0000826d0000846d0000866d0000886d00008a6d00008c6d00008e6d0000906d0000926d0000946d0000966d0000986d00009a6d00009c6d00009e6d0000a06d0000a26d0000a46d0000a66d0000a86d0000aa6d0000ac6d0000ae6d0000b06d0000b26d0000b46d0000b66d0000b86d0000ba6d0000bc6d0000be6d0000c06d0000c26d0000c46d0000c66d0000c86d0000ca6d0000cc6d0000ce6d0000d06d0000d26d0000d46d0000d66d0000d86d0000da6d0000dc6d0000de6d0000e06d0000e26d0000e46d0000e66d0000e86d0000ea6d0000ec6d0000ee6d0000f06d0000f26d0000f46d0000f66d0000f86d0000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
@ -1329,21 +1329,21 @@ MonoBehaviour:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs:
|
||||
m_LastClickedID: 0
|
||||
m_ExpandedIDs: ffffffff000000007e020000786d00007a6d00007c6d00007e6d0000806d0000826d0000846d0000866d0000886d00008a6d00008c6d00008e6d0000906d0000926d0000946d0000966d0000986d00009a6d00009c6d00009e6d0000a06d0000a26d0000a46d0000a66d0000a86d0000aa6d0000ac6d0000ae6d0000b06d0000b46d0000b66d0000b86d0000ba6d0000bc6d0000be6d0000c06d0000c26d0000c46d0000c66d0000c86d0000ca6d0000cc6d0000ce6d0000d06d0000d46d0000d66d0000d86d0000da6d0000dc6d0000de6d0000e06d0000e26d0000e66d0000e86d0000ea6d0000ec6d0000ee6d0000f06d0000f26d0000f46d0000f06f000008700000cc700000
|
||||
m_ExpandedIDs: ffffffff000000007e0200008c0d0000166c00007c6d00007e6d0000806d0000826d0000846d0000866d0000886d00008a6d00008c6d00008e6d0000926d0000946d0000966d0000986d00009a6d00009c6d00009e6d0000a66d0000a86d0000aa6d0000ac6d0000ae6d0000b06d0000b26d0000b46d0000b66d0000b86d0000ba6d0000bc6d0000be6d0000c06d0000c26d0000c46d0000c66d0000c86d0000ca6d0000cc6d0000ce6d0000d06d0000d26d0000d86d0000da6d0000dc6d0000de6d0000e06d0000e26d0000e46d0000e66d0000e86d0000ea6d0000f06d0000f26d0000f66d0000cc6f0000587400006a7400006c740000707400007e74000098740000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
m_OriginalName:
|
||||
m_Name: LocalizationTable
|
||||
m_OriginalName: LocalizationTable
|
||||
m_EditFieldRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 0
|
||||
height: 0
|
||||
m_UserData: 0
|
||||
m_UserData: 27670
|
||||
m_IsWaitingForDelay: 0
|
||||
m_IsRenaming: 0
|
||||
m_OriginalEventType: 11
|
||||
m_OriginalEventType: 0
|
||||
m_IsRenamingFilename: 1
|
||||
m_ClientGUIView: {fileID: 12}
|
||||
m_SearchString:
|
||||
@ -1405,9 +1405,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 1342
|
||||
y: 81
|
||||
width: 573
|
||||
x: 1136
|
||||
y: 73
|
||||
width: 783
|
||||
height: 926
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user