feat: 角色展示v1.2
This commit is contained in:
@@ -22,11 +22,12 @@
|
|||||||
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\ItemStatsSystem.dll" Private="False"/>
|
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\ItemStatsSystem.dll" Private="False"/>
|
||||||
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\Unity*" Private="False"/>
|
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\Unity*" Private="False"/>
|
||||||
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\FMODUnity.dll" Private="False"/>
|
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\FMODUnity.dll" Private="False"/>
|
||||||
<Reference Include="Eflatun.SceneReference">
|
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\UniTask.dll" Private="False"/>
|
||||||
<HintPath>..\..\..\steam\steamapps\common\Escape from Duckov\Duckov_Data\Managed\Eflatun.SceneReference.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Lib.Harmony" Version="2.4.1"/>
|
<PackageReference Include="Lib.Harmony" Version="2.4.1"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="PatchSceneLoaderNotifyPointerClick.cs" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
64
CharacterPreview/Config.cs
Normal file
64
CharacterPreview/Config.cs
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace CharacterPreview
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class ConfigData
|
||||||
|
{
|
||||||
|
public Vector3 modelPosition;
|
||||||
|
public Vector3 modelRotation;
|
||||||
|
public float modelScale;
|
||||||
|
public bool use = false;
|
||||||
|
public bool tip = true;
|
||||||
|
public bool hideCamera = true;
|
||||||
|
public bool showSetEditButton = true;
|
||||||
|
public bool canEdit = true;
|
||||||
|
public float editSpeed = 1;
|
||||||
|
public bool showEquipment = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class Config
|
||||||
|
{
|
||||||
|
private string configSavePath;
|
||||||
|
|
||||||
|
public ConfigData data = new ConfigData();
|
||||||
|
|
||||||
|
public Config(string savePath)
|
||||||
|
{
|
||||||
|
configSavePath = savePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save()
|
||||||
|
{
|
||||||
|
data.use = true;
|
||||||
|
var json = JsonUtility.ToJson(data, true);
|
||||||
|
File.WriteAllText(configSavePath, json);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Config Load(string savePath)
|
||||||
|
{
|
||||||
|
if (!File.Exists(savePath))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Create(savePath).Dispose();
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Failed to create empty config file at {savePath}: {ex.Message}");
|
||||||
|
return new Config(savePath) { data = new ConfigData() };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var json = File.ReadAllText(savePath);
|
||||||
|
var loadedData = JsonUtility.FromJson<ConfigData>(json);
|
||||||
|
|
||||||
|
var config = new Config(savePath);
|
||||||
|
config.data = loadedData ?? new ConfigData();
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
265
CharacterPreview/ControlModelMove.cs
Normal file
265
CharacterPreview/ControlModelMove.cs
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
using System;
|
||||||
|
using TMPro;
|
||||||
|
using Unity.VisualScripting;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace CharacterPreview
|
||||||
|
{
|
||||||
|
public class ControlModelMove : MonoBehaviour, IDragHandler,IPointerDownHandler,IPointerEnterHandler,IPointerExitHandler
|
||||||
|
{
|
||||||
|
private RectTransform rectTransform;
|
||||||
|
private Transform canvasRectTransform; //由滑动器自己创建的
|
||||||
|
private Vector2 lastMousePosition;
|
||||||
|
private Image image;
|
||||||
|
private TMP_Text text;
|
||||||
|
private Button editButton;
|
||||||
|
private TMP_Text editButtonText;
|
||||||
|
|
||||||
|
public bool firstClick=true;
|
||||||
|
|
||||||
|
public float Speed => ModBehaviour.config.data.editSpeed;
|
||||||
|
//防止鼠标在范围外捕获消息
|
||||||
|
private bool canEdit = false;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
SetRectTransform();
|
||||||
|
SetText();
|
||||||
|
SetColor();
|
||||||
|
if(ModBehaviour.config.data.showSetEditButton)
|
||||||
|
SetEditButton();
|
||||||
|
firstClick = ModBehaviour.config.data.tip;
|
||||||
|
if (!firstClick)
|
||||||
|
{
|
||||||
|
HideTip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
if (canvasRectTransform)
|
||||||
|
{
|
||||||
|
Destroy(canvasRectTransform.gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
if (!canEdit)
|
||||||
|
return;
|
||||||
|
var scroll = Input.GetAxis("Mouse ScrollWheel");
|
||||||
|
if (scroll != 0)
|
||||||
|
{
|
||||||
|
if (Input.GetMouseButton(1))
|
||||||
|
{
|
||||||
|
ModBehaviour.modelMove.RotateAroundCameraZ(Speed * scroll * 8);
|
||||||
|
}
|
||||||
|
else if(Input.GetKey(KeyCode.LeftShift))
|
||||||
|
{
|
||||||
|
ModBehaviour.modelMove.Scale(Speed*scroll/4f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ModBehaviour.modelMove.Move(new Vector3(0, 0, Speed * scroll * 2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.GetMouseButtonDown(2))
|
||||||
|
{
|
||||||
|
if (Input.GetKey(KeyCode.LeftControl))
|
||||||
|
{
|
||||||
|
ModBehaviour.modelMove.RefreshPosition();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ModBehaviour.modelMove.LookAtCamera();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetColor()
|
||||||
|
{
|
||||||
|
var color = new Color(0.9f, 0.8f, 0.3f, 0.1f);
|
||||||
|
image = gameObject.GetComponent<Image>();
|
||||||
|
if (!image)
|
||||||
|
{
|
||||||
|
image = gameObject.AddComponent<Image>();
|
||||||
|
}
|
||||||
|
|
||||||
|
image.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetText()
|
||||||
|
{
|
||||||
|
text=gameObject.GetComponentInChildren<TMP_Text>();
|
||||||
|
if (!text)
|
||||||
|
{
|
||||||
|
var textChilde = new GameObject("Text");
|
||||||
|
textChilde.transform.SetParent(gameObject.transform);
|
||||||
|
var rect = textChilde.AddComponent<RectTransform>();
|
||||||
|
text= textChilde.AddComponent<TextMeshProUGUI>();
|
||||||
|
|
||||||
|
rect.anchorMax = Vector2.one;
|
||||||
|
rect.anchorMin = Vector2.zero;
|
||||||
|
rect.offsetMin = Vector2.zero;
|
||||||
|
rect.offsetMax = Vector2.zero;
|
||||||
|
}
|
||||||
|
text.fontSize = 24;
|
||||||
|
text.alignment=TextAlignmentOptions.Center;
|
||||||
|
text.text = "在此区域可以编辑模型状态(点击区域关闭提示)\n" +
|
||||||
|
"通过鼠标左键拖动修改角色的上下左右位置\n" +
|
||||||
|
"通过鼠标滚轮修改角色的z轴位置\n" +
|
||||||
|
"通过鼠标右键控制角色旋转\n" +
|
||||||
|
"按住右键的情况下滚动滚轮可让角色转圈\n" +
|
||||||
|
"按住shift滚动滚轮可缩放角色\n" +
|
||||||
|
"点按鼠标中键可让角色朝向摄像头\n" +
|
||||||
|
"按住ctrl并点击中键则恢复默认位置";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetRectTransform()
|
||||||
|
{
|
||||||
|
if (!rectTransform)
|
||||||
|
{
|
||||||
|
rectTransform = GetComponent<RectTransform>();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rectTransform)
|
||||||
|
{
|
||||||
|
rectTransform = gameObject.AddComponent<RectTransform>();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rectTransform.parent || rectTransform.parent.name != "Canvas")
|
||||||
|
{
|
||||||
|
var defaultCanvas = GameObject.Find("Canvas");
|
||||||
|
if (!defaultCanvas)
|
||||||
|
{
|
||||||
|
defaultCanvas = new GameObject("ControlModelMoveCanvas");
|
||||||
|
var canvas = defaultCanvas.AddComponent<Canvas>();
|
||||||
|
canvas.renderMode = RenderMode.ScreenSpaceOverlay; // 设置渲染模式为屏幕空间覆盖
|
||||||
|
defaultCanvas.AddComponent<CanvasScaler>();
|
||||||
|
defaultCanvas.AddComponent<GraphicRaycaster>();
|
||||||
|
canvasRectTransform = defaultCanvas.transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
rectTransform.SetParent(defaultCanvas.transform);
|
||||||
|
}
|
||||||
|
|
||||||
|
rectTransform.SetAsFirstSibling();
|
||||||
|
|
||||||
|
rectTransform.anchorMax = Vector2.one;
|
||||||
|
rectTransform.anchorMin = new Vector2(0.5f, 0);
|
||||||
|
rectTransform.offsetMax = Vector2.zero;
|
||||||
|
rectTransform.offsetMin = Vector2.zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetEditButton()
|
||||||
|
{
|
||||||
|
if (!editButton)
|
||||||
|
{
|
||||||
|
var buttonObj = new GameObject("EditButton");
|
||||||
|
buttonObj.transform.SetParent(transform, false);
|
||||||
|
var buttonRect= buttonObj.AddComponent<RectTransform>();
|
||||||
|
buttonRect.anchorMax=Vector2.right;
|
||||||
|
buttonRect.anchorMin=Vector2.right;
|
||||||
|
buttonRect.pivot = Vector2.right;
|
||||||
|
buttonRect.sizeDelta=new Vector2(80f,30f);
|
||||||
|
buttonRect.anchoredPosition = new Vector2(-200, 100);
|
||||||
|
|
||||||
|
|
||||||
|
var button = buttonObj.AddComponent<Button>();
|
||||||
|
var buttonImage = buttonObj.AddComponent<Image>();
|
||||||
|
buttonImage.color = Color.green;
|
||||||
|
button.image = buttonImage;
|
||||||
|
|
||||||
|
var textObj=new GameObject("Text");
|
||||||
|
var txtRect = textObj.AddComponent<RectTransform>();
|
||||||
|
txtRect.SetParent(buttonRect);
|
||||||
|
txtRect.anchorMax=Vector2.one;
|
||||||
|
txtRect.anchorMin=Vector2.zero;
|
||||||
|
txtRect.offsetMax=Vector2.zero;
|
||||||
|
txtRect.offsetMin=Vector2.zero;
|
||||||
|
|
||||||
|
var tmpText = txtRect.gameObject.AddComponent<TextMeshProUGUI>();
|
||||||
|
tmpText.text = "关闭编辑";
|
||||||
|
tmpText.color = Color.white;
|
||||||
|
tmpText.alignment = TextAlignmentOptions.Center;
|
||||||
|
tmpText.fontSize = 14;
|
||||||
|
tmpText.raycastTarget = false; // 文本RaycastTarget通常为false,除非文本本身需要互动
|
||||||
|
|
||||||
|
button.AddComponent<HideSelfOnLeisure>();
|
||||||
|
|
||||||
|
editButton = button;
|
||||||
|
editButtonText = tmpText;
|
||||||
|
}
|
||||||
|
|
||||||
|
editButton.onClick.RemoveAllListeners();
|
||||||
|
editButton.onClick.AddListener(OnEditButton);
|
||||||
|
RefreshEditButton();
|
||||||
|
}
|
||||||
|
public void HideTip()
|
||||||
|
{
|
||||||
|
var oldColor = Color.black;
|
||||||
|
oldColor.a = 0.01f;
|
||||||
|
image.color = oldColor;
|
||||||
|
text.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RefreshEditButton()
|
||||||
|
{
|
||||||
|
if (editButton)
|
||||||
|
{
|
||||||
|
editButton.image.color = ModBehaviour.config.data.canEdit ? Color.green : Color.red;
|
||||||
|
editButtonText.text = ModBehaviour.config.data.canEdit ? "关闭编辑" : "开启编辑";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnDrag(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
var shift = eventData.position - lastMousePosition;
|
||||||
|
if (ModBehaviour.modelMove)
|
||||||
|
{
|
||||||
|
if (Input.GetMouseButton(0))
|
||||||
|
{
|
||||||
|
ModBehaviour.modelMove.Move(shift * Speed / 750);
|
||||||
|
}
|
||||||
|
else if (Input.GetMouseButton(1))
|
||||||
|
{
|
||||||
|
ModBehaviour.modelMove.Rotate(shift * Speed * 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastMousePosition=eventData.position;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerDown(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
lastMousePosition=eventData.position;
|
||||||
|
if (firstClick)
|
||||||
|
{
|
||||||
|
HideTip();
|
||||||
|
firstClick=false;
|
||||||
|
ModBehaviour.config.data.tip = firstClick;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void OnPointerEnter(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
canEdit = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerExit(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
canEdit = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnEditButton()
|
||||||
|
{
|
||||||
|
ModBehaviour.config.data.canEdit = !ModBehaviour.config.data.canEdit;
|
||||||
|
RefreshEditButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
216
CharacterPreview/GameObjectUtils.cs
Normal file
216
CharacterPreview/GameObjectUtils.cs
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CharacterPreview
|
||||||
|
{
|
||||||
|
public static class GameObjectUtils
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 在指定根对象下根据路径查找子对象,包括隐藏对象。
|
||||||
|
/// 路径示例:"Parent/Child/Grandchild" 或 "MyObject"
|
||||||
|
/// 如果路径以'/'开头,它会被视为相对于根对象。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="rootObject">起始查找的根GameObject。</param>
|
||||||
|
/// <param name="path">要查找的对象的相对路径。</param>
|
||||||
|
/// <returns>找到的GameObject,如果未找到则返回null。</returns>
|
||||||
|
public static GameObject FindObjectByPath(GameObject rootObject, string path)
|
||||||
|
{
|
||||||
|
if (rootObject == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("FindObjectByPath: rootObject cannot be null.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(path))
|
||||||
|
{
|
||||||
|
Debug.LogWarning("FindObjectByPath: Path is empty or whitespace. Returning the root object itself.");
|
||||||
|
return rootObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 规范化路径,移除多余的斜杠
|
||||||
|
var pathParts = path.Split(new char[] { '/' }, System.StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
var currentTransform = rootObject.transform;
|
||||||
|
foreach (var part in pathParts)
|
||||||
|
{
|
||||||
|
Transform foundChild = null;
|
||||||
|
// 迭代所有子对象(包括非激活的)
|
||||||
|
// GetChild() 只获取激活状态的子对象,甚至不会获取非激活的 Transform。
|
||||||
|
// 更好的方法是迭代所有 Transform,检查 parent 是否是 currentTransform。
|
||||||
|
// 然而,Unity的API并没有直接提供一个GetChildren(includeInactive: true)的方法,
|
||||||
|
// 所以我们需要遍历所有场景中的Transform或用递归查找。
|
||||||
|
// 对于层级较深或子对象较多的情况,这种遍历可能会比较慢。
|
||||||
|
//
|
||||||
|
// 另一种常见但更低效的方法是使用 FindObjectsOfTypeAll<Transform>() 然后过滤,
|
||||||
|
// 但那会遍历整个场景。
|
||||||
|
//
|
||||||
|
// 最直接且相对高效的方法是递归查找子Transform。
|
||||||
|
// 迭代当前 Transform 的所有直接子 Transform
|
||||||
|
for (var i = 0; i < currentTransform.childCount; i++)
|
||||||
|
{
|
||||||
|
var child = currentTransform.GetChild(i);
|
||||||
|
if (child.name == part)
|
||||||
|
{
|
||||||
|
foundChild = child;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foundChild != null)
|
||||||
|
{
|
||||||
|
currentTransform = foundChild;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 未找到当前路径部分对应的子对象
|
||||||
|
Debug.LogWarning(
|
||||||
|
$"FindObjectByPath: Could not find '{part}' under '{currentTransform.name}' at path '{path}'.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return currentTransform.gameObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// (推荐使用) 更通用的方法:在任意指定Transform下根据相对路径查找子Transform,包括隐藏对象。
|
||||||
|
/// 路径示例:"Parent/Child/Grandchild" 或 "MyObject"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="rootTransform">起始查找的根Transform。</param>
|
||||||
|
/// <param name="relativePath">要查找的子Transform的相对路径。</param>
|
||||||
|
/// <returns>找到的Transform,如果未找到则返回null。</returns>
|
||||||
|
public static Transform FindTransformByRelativePath(Transform rootTransform, string relativePath)
|
||||||
|
{
|
||||||
|
if (rootTransform == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("FindTransformByRelativePath: rootTransform cannot be null.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(relativePath))
|
||||||
|
{
|
||||||
|
Debug.LogWarning(
|
||||||
|
"FindTransformByRelativePath: relativePath is empty or whitespace. Returning the rootTransform itself.");
|
||||||
|
return rootTransform;
|
||||||
|
}
|
||||||
|
|
||||||
|
var pathParts = relativePath.Split(new char[] { '/' }, System.StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
var currentTransform = rootTransform;
|
||||||
|
foreach (var partName in pathParts)
|
||||||
|
{
|
||||||
|
Transform foundChild = null;
|
||||||
|
// GetChild(i) 方法返回的 Transform 即使其 GameObject.activeSelf 为 false,它仍然是存在的。
|
||||||
|
// 所以这种遍历是包括非激活对象的。
|
||||||
|
for (var i = 0; i < currentTransform.childCount; i++)
|
||||||
|
{
|
||||||
|
var child = currentTransform.GetChild(i);
|
||||||
|
if (child.name == partName)
|
||||||
|
{
|
||||||
|
foundChild = child;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foundChild != null)
|
||||||
|
{
|
||||||
|
currentTransform = foundChild;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning(
|
||||||
|
$"FindTransformByRelativePath: Could not find '{partName}' under '{currentTransform.name}' (Full Path Attempted: {relativePath}).");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return currentTransform;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 在整个场景中根据完整路径查找GameObject,包括隐藏对象。
|
||||||
|
/// 注意:如果场景中有多个同名根对象,此方法可能只返回第一个找到的。
|
||||||
|
/// 如果路径以'/'开头,它会被视为相对于场景根目录的路径。
|
||||||
|
/// 例如: "MyRootObject/Child/Grandchild"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="fullPath">要查找的对象的完整路径。</param>
|
||||||
|
/// <returns>找到的GameObject,如果未找到则返回null。</returns>
|
||||||
|
public static GameObject FindObjectByFullPath(string fullPath)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(fullPath))
|
||||||
|
{
|
||||||
|
Debug.LogWarning("FindObjectByFullPath: Path is empty or whitespace.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 规范化路径
|
||||||
|
var pathParts = fullPath.Split(new char[] { '/' }, System.StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
if (pathParts.Length == 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rootObjectName = pathParts[0];
|
||||||
|
// 查找所有根对象 (即没有父Transform的对象)
|
||||||
|
// Unity没有直接提供获取所有root GameObjects的API
|
||||||
|
// 我们可以通过迭代所有活跃的GameObject,并检查其parent是否为null来找到根对象。
|
||||||
|
// 但为了包含隐藏对象,我们需要更复杂的方法。
|
||||||
|
//
|
||||||
|
// 更好的方法是使用 FindObjectsOfTypeAll<Transform>() 找到所有Transform,
|
||||||
|
// 然后过滤出parent为null的作为根对象。
|
||||||
|
// 注意:FindObjectsOfTypeAll 即使是静态方法,其效率也可能低于遍历已经知道的子对象。
|
||||||
|
// 在编辑器模式下,Resources.FindObjectsOfTypeAll<GameObject>() 可以获取所有对象。
|
||||||
|
// 在运行时,我们通常需要先有一个起点。
|
||||||
|
// 为了在运行时找到根对象(包括非激活的),我们可以先尝试 FindObjectOfType<GameObject>()
|
||||||
|
// 或者遍历当前场景中的所有Transform,然后向上追溯到根。
|
||||||
|
// 最直接的做法是假设我们知道路径的第一个部分是根对象,然后从那里开始。
|
||||||
|
// 尝试通过 GameObject.Find() 或类似的编辑器工具去查找根对象
|
||||||
|
// GameObject.Find() 只查找激活的根对象,且只通过名称查找。
|
||||||
|
// GameObject.Find(rootObjectName) 即使找到了,也可能不会是整个路径的起点。
|
||||||
|
// 为了包含隐藏对象,我们需要遍历。
|
||||||
|
// 一个更可靠的方法是,先找到所有根Transform,然后对每个根Transform调用 FindTransformByRelativePath。
|
||||||
|
// 获取所有根Transform的方法:
|
||||||
|
var rootTransforms = new List<Transform>();
|
||||||
|
var allTransformsInScene =
|
||||||
|
Resources.FindObjectsOfTypeAll<Transform>(); // 注意:此方法在Editor中有效,在Build中会有些限制
|
||||||
|
// 在编辑器环境中,Resources.FindObjectsOfTypeAll 很好用。
|
||||||
|
// 在运行时,这个方法通常只返回在Resources文件夹中的对象,或者在场景中已有的对象,而不是所有已加载的对象。
|
||||||
|
// 对于运行时,更可靠的是遍历所有的场景:
|
||||||
|
for (var i = 0; i < UnityEngine.SceneManagement.SceneManager.sceneCount; i++)
|
||||||
|
{
|
||||||
|
var scene = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i);
|
||||||
|
if (scene.isLoaded)
|
||||||
|
{
|
||||||
|
foreach (var go in scene.GetRootGameObjects())
|
||||||
|
{
|
||||||
|
// go 是根 GameObject,它可能是激活的或非激活的。
|
||||||
|
// GetRootGameObjects() 已经包含了非激活的根对象。
|
||||||
|
rootTransforms.Add(go.transform);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var rootT in rootTransforms)
|
||||||
|
{
|
||||||
|
if (rootT.name == rootObjectName)
|
||||||
|
{
|
||||||
|
// 如果路径只有一个部分,就是根对象本身
|
||||||
|
if (pathParts.Length == 1)
|
||||||
|
{
|
||||||
|
return rootT.gameObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建子路径(移除根对象的名称)
|
||||||
|
var relativeSubPath = string.Join("/", pathParts, 1, pathParts.Length - 1);
|
||||||
|
var result = FindTransformByRelativePath(rootT, relativeSubPath);
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
return result.gameObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.LogWarning(
|
||||||
|
$"FindObjectByFullPath: Could not find any root object named '{rootObjectName}' or the full path '{fullPath}'.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
64
CharacterPreview/HideSelfOnLeisure.cs
Normal file
64
CharacterPreview/HideSelfOnLeisure.cs
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace CharacterPreview
|
||||||
|
{
|
||||||
|
public class HideSelfOnLeisure:MonoBehaviour,IPointerEnterHandler,IPointerExitHandler
|
||||||
|
{
|
||||||
|
private Image image;
|
||||||
|
private Color CurrentColor => ModBehaviour.config.data.canEdit ? Color.green : Color.red;
|
||||||
|
private Color HideColor => ModBehaviour.config.data.canEdit
|
||||||
|
? new Color(Color.green.r, Color.green.g, Color.green.b, 0.1f)
|
||||||
|
: new Color(Color.red.r, Color.red.g, Color.red.b, 0.1f);
|
||||||
|
|
||||||
|
public float hideTime = 3f;
|
||||||
|
public float animationTime = 1f;
|
||||||
|
private float timer = 0;
|
||||||
|
private float animationTimer = 0;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
image = GetComponent<Image>();
|
||||||
|
// if (!image)
|
||||||
|
// gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (timer < hideTime)
|
||||||
|
{
|
||||||
|
timer += Time.deltaTime;
|
||||||
|
if (timer >= hideTime)
|
||||||
|
{
|
||||||
|
animationTimer = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (animationTimer < animationTime)
|
||||||
|
{
|
||||||
|
animationTimer += Time.deltaTime;
|
||||||
|
// if(animationTimer >= animationTime)
|
||||||
|
// animationTimer=animationTime;
|
||||||
|
var t = animationTimer / animationTime;
|
||||||
|
t = Mathf.Clamp01(t);
|
||||||
|
image.color = Color.Lerp(CurrentColor, HideColor, t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerEnter(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
if(!image)return;
|
||||||
|
timer = hideTime;
|
||||||
|
animationTimer = animationTime;
|
||||||
|
image.color = CurrentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerExit(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
if (!image) return;
|
||||||
|
timer = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
175
CharacterPreview/Load_DuckovCustomModel.cs
Normal file
175
CharacterPreview/Load_DuckovCustomModel.cs
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CharacterPreview
|
||||||
|
{
|
||||||
|
public static class Load_DuckovCustomModel
|
||||||
|
{
|
||||||
|
public static ModelMove? CreateModel()
|
||||||
|
{
|
||||||
|
Action startMethod = null;
|
||||||
|
Action midMethod = null;
|
||||||
|
Action endMethod = null;
|
||||||
|
// 尝试获取 LevelManager_OnLevelBeginInitializing
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnLevelBeginInitializing...");
|
||||||
|
startMethod =
|
||||||
|
GetPrivateStaticVoidMethod(
|
||||||
|
"DuckovCustomModel.ModEntry.LevelManager_OnLevelBeginInitializing");
|
||||||
|
Debug.Log("[Main Runner] 成功获取 LevelManager_OnLevelBeginInitializing 委托。");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError(
|
||||||
|
$"[Main Runner] <color=red>获取 LevelManager_OnLevelBeginInitializing 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 尝试获取 LevelManager_OnLevelInitialized
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnLevelInitialized...");
|
||||||
|
midMethod = GetPrivateStaticVoidMethod(
|
||||||
|
"DuckovCustomModel.ModEntry.LevelManager_OnLevelInitialized");
|
||||||
|
Debug.Log("[Main Runner] 成功获取 LevelManager_OnLevelInitialized 委托。");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError(
|
||||||
|
$"[Main Runner] <color=red>获取 LevelManager_OnLevelInitialized 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 尝试获取 LevelManager_OnAfterLevelInitialized
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnAfterLevelInitialized...");
|
||||||
|
endMethod = GetPrivateStaticVoidMethod(
|
||||||
|
"DuckovCustomModel.ModEntry.LevelManager_OnAfterLevelInitialized");
|
||||||
|
Debug.Log("[Main Runner] 成功获取 LevelManager_OnAfterLevelInitialized 委托。");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError(
|
||||||
|
$"[Main Runner] <color=red>获取 LevelManager_OnAfterLevelInitialized 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("\n[Main Runner] --- 调用获取到的方法 ---");
|
||||||
|
if (startMethod != null)
|
||||||
|
{
|
||||||
|
Debug.Log("[Main Runner] 正在调用 LevelManager_OnLevelBeginInitializing...");
|
||||||
|
startMethod.Invoke();
|
||||||
|
Debug.Log("[Main Runner] LevelManager_OnLevelBeginInitializing 调用完成。");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Debug.LogWarning("[Main Runner] LevelManager_OnLevelBeginInitializing 委托为 null,跳过调用。");
|
||||||
|
|
||||||
|
if (midMethod != null)
|
||||||
|
{
|
||||||
|
Debug.Log("[Main Runner] 正在调用 LevelManager_OnLevelInitialized...");
|
||||||
|
midMethod.Invoke();
|
||||||
|
Debug.Log("[Main Runner] LevelManager_OnLevelInitialized 调用完成。");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Debug.LogWarning("[Main Runner] LevelManager_OnLevelInitialized 委托为 null,跳过调用。");
|
||||||
|
|
||||||
|
if (endMethod != null)
|
||||||
|
{
|
||||||
|
Debug.Log("[Main Runner] 正在调用 LevelManager_OnAfterLevelInitialized...");
|
||||||
|
endMethod.Invoke();
|
||||||
|
Debug.Log("[Main Runner] LevelManager_OnAfterLevelInitialized 调用完成。");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Debug.LogWarning("[Main Runner] LevelManager_OnAfterLevelInitialized 委托为 null,跳过调用。");
|
||||||
|
// var target = DuckovCustomModel.Core.Data.ModelTarget.Character;
|
||||||
|
//
|
||||||
|
// Debug.Log("运行替换");
|
||||||
|
// var currentModelID = DuckovCustomModel.ModEntry.UsingModel?.GetModelID(target) ?? string.Empty;
|
||||||
|
// if (string.IsNullOrEmpty(currentModelID))
|
||||||
|
// {
|
||||||
|
// // 错误日志:未能获取当前模型ID
|
||||||
|
// Debug.LogError($"[DuckovCustomModel] Failed to get current model ID for target '{target}'. Current model reference might be null or GetModelID returned null/empty. Returning null.");
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// // 注意:out _ 用于忽略 ModelManager 返回的第一个 out 参数
|
||||||
|
// if (!DuckovCustomModel.Managers.ModelManager.FindModelByID(currentModelID, out _, out var modelInfo))
|
||||||
|
// {
|
||||||
|
// // 错误日志:未能找到指定的模型
|
||||||
|
// Debug.LogError($"[DuckovCustomModel] Model with ID '{currentModelID}' not found by ModelManager for target '{target}'. Returning null.");
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// if (!modelInfo.CompatibleWithType(target))
|
||||||
|
// {
|
||||||
|
// // 错误日志:模型与目标不兼容
|
||||||
|
// Debug.LogError($"[DuckovCustomModel] Model '{currentModelID}' is not compatible with target '{target}'. Returning null.");
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// Debug.Log($"inf{currentModelID}");
|
||||||
|
// // 如果前面的检查都通过,则应用模型
|
||||||
|
// DuckovCustomModel.Managers.ModelListManager.ApplyModelToTarget(target, currentModelID, true);
|
||||||
|
//
|
||||||
|
// var handlers=DuckovCustomModel.Managers.ModelManager.GetAllModelHandlers(target);
|
||||||
|
// Debug.Log($"handlers{handlers.Count}");
|
||||||
|
// Debug.Log("运行完成");
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Action GetPrivateStaticVoidMethod(string fullMethodName)
|
||||||
|
{
|
||||||
|
var lastDotIndex = fullMethodName.LastIndexOf('.');
|
||||||
|
if (lastDotIndex == -1 || lastDotIndex == fullMethodName.Length - 1)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"无效的方法名格式: {fullMethodName}。应为 'Namespace.ClassName.MethodName'。");
|
||||||
|
}
|
||||||
|
|
||||||
|
var fullTypeName = fullMethodName.Substring(0, lastDotIndex);
|
||||||
|
var methodName = fullMethodName.Substring(lastDotIndex + 1);
|
||||||
|
Type targetType = null;
|
||||||
|
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||||
|
{
|
||||||
|
targetType = assembly.GetType(fullTypeName);
|
||||||
|
if (targetType != null)
|
||||||
|
{
|
||||||
|
break; // 找到类型后停止搜索
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetType == null)
|
||||||
|
{
|
||||||
|
throw new TypeLoadException($"在任何已加载的程序集中都未找到类型: {fullTypeName}。");
|
||||||
|
}
|
||||||
|
|
||||||
|
var methodInfo = targetType.GetMethod(
|
||||||
|
methodName,
|
||||||
|
BindingFlags.NonPublic | BindingFlags.Static
|
||||||
|
);
|
||||||
|
if (methodInfo == null)
|
||||||
|
{
|
||||||
|
throw new MissingMethodException(
|
||||||
|
$"在类型 '{fullTypeName}' 中未找到名为 '{methodName}' 的私有静态方法," +
|
||||||
|
$"或者该方法不满足私有、静态、无参的条件。"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (methodInfo.GetParameters().Length != 0)
|
||||||
|
{
|
||||||
|
throw new MissingMethodException(
|
||||||
|
$"方法 '{fullMethodName}' 存在参数,不符合无参 Action 的要求。"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (methodInfo.ReturnType != typeof(void))
|
||||||
|
{
|
||||||
|
throw new MissingMethodException(
|
||||||
|
$"方法 '{fullMethodName}' 返回值不是 void,不符合 Action 的要求。"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Action)methodInfo.CreateDelegate(typeof(Action));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Cysharp.Threading.Tasks;
|
||||||
using Duckov.Utilities;
|
using Duckov.Utilities;
|
||||||
|
using ItemStatsSystem;
|
||||||
using Saves;
|
using Saves;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
@@ -11,98 +13,211 @@ namespace CharacterPreview
|
|||||||
{
|
{
|
||||||
public class ModBehaviour : Duckov.Modding.ModBehaviour
|
public class ModBehaviour : Duckov.Modding.ModBehaviour
|
||||||
{
|
{
|
||||||
private static CharacterModel characterModel;
|
private static CharacterMainControl characterControl;
|
||||||
|
public static ModelMove modelMove;
|
||||||
private const string characterFaceSaveKey = "CustomFace_MainCharacter";
|
private const string characterFaceSaveKey = "CustomFace_MainCharacter";
|
||||||
private OnPointerClick? instance;
|
private const string characterItemSaveKey = "MainCharacterItemData";
|
||||||
|
|
||||||
private const string ModelName = "CharacterPreviewModel";
|
private const string ModelName = "CharacterPreviewModel";
|
||||||
|
|
||||||
|
public static Config config;
|
||||||
|
|
||||||
|
private static GameObject cameraModelObject;
|
||||||
|
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
config.Save();
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnAfterSetup()
|
protected override void OnAfterSetup()
|
||||||
{
|
{
|
||||||
MainMenu.OnMainMenuAwake += CreateCharacterModel;
|
var path=Path.Combine(info.path,"config.json");
|
||||||
//
|
config = Config.Load(path);
|
||||||
// if (!instance)
|
SceneManager.sceneLoaded+=OnSceneLoaded;
|
||||||
// {
|
AddListen();
|
||||||
// instance = GetPointerClickEventReceiver();
|
|
||||||
// if (instance == null)
|
|
||||||
// {
|
|
||||||
// Debug.LogError("未能找到 SceneLoader.Instance.pointerClickEventRecevier!");
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// instance.onPointerClick.AddListener((t) => CreateCharacterModel());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnBeforeDeactivate()
|
protected override void OnBeforeDeactivate()
|
||||||
{
|
{
|
||||||
MainMenu.OnMainMenuAwake -= CreateCharacterModel;
|
SceneManager.sceneLoaded -= OnSceneLoaded;
|
||||||
|
RemoveModel();
|
||||||
|
}
|
||||||
|
|
||||||
if (characterModel)
|
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||||
|
{
|
||||||
|
if (scene.name == "MainMenu")
|
||||||
{
|
{
|
||||||
Destroy(characterModel.gameObject);
|
AddListen();
|
||||||
|
// _ = CreateCharacterModel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CreateCharacterModel()
|
private void AddListen()
|
||||||
{
|
{
|
||||||
if (characterModel)
|
var canvasObj = GameObject.Find("Canvas");
|
||||||
|
if (canvasObj == null)
|
||||||
{
|
{
|
||||||
Debug.LogWarning("CharacterModel is already created");
|
Debug.Log("Canvas not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var mainMenu=GameObjectUtils.FindObjectByPath(canvasObj, "MainMenuContainer");
|
||||||
|
if (!mainMenu)
|
||||||
|
{
|
||||||
|
Debug.Log("MainMenuContainer not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var listen = mainMenu.GetComponent<ShowListen>();
|
||||||
|
if (!listen)
|
||||||
|
{
|
||||||
|
mainMenu.AddComponent<ShowListen>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RemoveModel()
|
||||||
|
{
|
||||||
|
if (characterControl)
|
||||||
|
{
|
||||||
|
Destroy(characterControl.gameObject);
|
||||||
|
characterControl = null;
|
||||||
|
modelMove = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async UniTask CreateCharacterModel()
|
||||||
|
{
|
||||||
|
if (characterControl)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[CreateCharacterModel] CharacterModel 已经被创建,跳过重复创建。");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SceneManager.GetActiveScene().name != "MainMenu")
|
if (SceneManager.GetActiveScene().name != "MainMenu")
|
||||||
{
|
{
|
||||||
Debug.LogWarning("非主菜单");
|
Debug.LogWarning(
|
||||||
|
$"[CreateCharacterModel] 当前场景为 \"{SceneManager.GetActiveScene().name}\",非主菜单界面 \"MainMenu\",无法创建角色模型。");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!characterModel)
|
|
||||||
|
Item item = await ItemSavesUtilities.LoadItem(characterItemSaveKey);
|
||||||
|
if (item == null)
|
||||||
{
|
{
|
||||||
var prefab = GetCharacterModelPrefab_Reflection();
|
Debug.Log($"[CreateCharacterModel] 未找到已保存的 {characterItemSaveKey},将使用默认角色模板创建新角色。");
|
||||||
if (prefab == null)
|
|
||||||
|
var defaultTypeID = GameplayDataSettings.ItemAssets.DefaultCharacterItemTypeID;
|
||||||
|
item = await ItemAssetsCollection.InstantiateAsync(defaultTypeID);
|
||||||
|
if (item == null)
|
||||||
{
|
{
|
||||||
Debug.LogError("未能获取 CharacterModel 预制体!");
|
Debug.LogError("[CreateCharacterModel] 无法通过默认角色类型 ID 实例化角色物品,请确认资源是否存在且配置正确。");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
characterModel = Instantiate(prefab);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (characterModel)
|
|
||||||
|
// 获取角色模型预制体
|
||||||
|
var model = GetCharacterModelPrefab_Reflection();
|
||||||
|
if (model == null)
|
||||||
{
|
{
|
||||||
characterModel.name = ModelName;
|
Debug.LogError("[CreateCharacterModel] 通过反射获取角色模型预制体失败,请检查 GetCharacterModelPrefab_Reflection 方法实现。");
|
||||||
var customFaceSettingData = SavesSystem.Load<CustomFaceSettingData>(characterFaceSaveKey);
|
return;
|
||||||
if (!customFaceSettingData.savedSetting)
|
}
|
||||||
|
|
||||||
|
characterControl = CreateCharacter(
|
||||||
|
item, model, Vector3.zero, Quaternion.identity);
|
||||||
|
|
||||||
|
|
||||||
|
if (characterControl == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("[CreateCharacterModel] 角色创建失败,返回的 characterControl 为 null。");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
characterControl.enabled = false;
|
||||||
|
characterControl.gameObject.name = ModelName;
|
||||||
|
|
||||||
|
// 加载自定义面部设置
|
||||||
|
var customFaceSettingData = SavesSystem.Load<CustomFaceSettingData>(characterFaceSaveKey);
|
||||||
|
if (!customFaceSettingData.savedSetting)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[CreateCharacterModel] 未能加载有效的 CustomFaceSettingData,将使用默认预设。");
|
||||||
|
|
||||||
|
if (GameplayDataSettings.CustomFaceData?.DefaultPreset?.settings == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("[CreateCharacterModel] 默认面部预设也为空!无法应用面部设置。");
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
Debug.LogError("未能找到或加载 CustomFaceSettingData !");
|
|
||||||
customFaceSettingData = GameplayDataSettings.CustomFaceData.DefaultPreset.settings;
|
customFaceSettingData = GameplayDataSettings.CustomFaceData.DefaultPreset.settings;
|
||||||
}
|
}
|
||||||
characterModel.CustomFace.LoadFromData(customFaceSettingData);
|
}
|
||||||
characterModel.gameObject.AddComponent<ModelMove>();
|
|
||||||
|
if (characterControl.characterModel?.CustomFace != null)
|
||||||
|
{
|
||||||
|
characterControl.characterModel.CustomFace.LoadFromData(customFaceSettingData);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[CreateCharacterModel] 跳过面部数据加载:CustomFace 组件或数据为空。");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加移动组件
|
||||||
|
modelMove = characterControl.gameObject.GetComponent<ModelMove>();
|
||||||
|
if (modelMove == null)
|
||||||
|
{
|
||||||
|
modelMove = characterControl.gameObject.AddComponent<ModelMove>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.LogWarning("这个是模型的动画组件报错,由于这个是部分初始化,导致内容不完全,不影响(其实是因为没影响就懒得一个个分析了,欸嘿(*^▽^*))");
|
||||||
|
HideCamera();
|
||||||
|
// SetModelShow(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetModelShow(bool show)
|
||||||
|
{
|
||||||
|
if (characterControl)
|
||||||
|
{
|
||||||
|
characterControl.gameObject.SetActive(show);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OnPointerClick GetPointerClickEventReceiver()
|
|
||||||
|
private static void HideCamera()
|
||||||
{
|
{
|
||||||
var sl = SceneLoader.Instance;
|
if (!cameraModelObject)
|
||||||
// 使用反射获取 SceneLoader 中的 pointerClickEventReceiver 字段
|
|
||||||
var field = typeof(SceneLoader).GetField("pointerClickEventRecevier", BindingFlags.Instance | BindingFlags.NonPublic);
|
|
||||||
if (field == null)
|
|
||||||
{
|
{
|
||||||
Debug.LogError("pointerClickEventRecevier 字段在 SceneLoader 中未找到!");
|
var camera = FindObjectOfType<Camera>();
|
||||||
return null;
|
if (camera == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[CreateCharacterModel] 场景中未找到 Camera 对象。");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cameraModelObject = GameObjectUtils.FindObjectByPath(camera.gameObject, "Camera01_prefab");
|
||||||
|
if (cameraModelObject == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[CreateCharacterModel] 在 Camera 下未找到路径为 \"Camera01_prefab\" 的子对象。");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 获取字段值并转换为 OnPointerClick
|
if (cameraModelObject)
|
||||||
var eventReceiver = field.GetValue(sl) as OnPointerClick;
|
|
||||||
if (eventReceiver == null)
|
|
||||||
{
|
{
|
||||||
Debug.LogError("pointerClickEventRecevier 字段的值为空!");
|
if (config.data.hideCamera)
|
||||||
return null;
|
{
|
||||||
|
cameraModelObject.SetActive(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cameraModelObject.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError("[CreateCharacterModel] 未找到摄像机模型对象,无法控制其显示状态。");
|
||||||
}
|
}
|
||||||
return eventReceiver;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CharacterModel GetCharacterModelPrefab_Reflection()
|
private static CharacterModel GetCharacterModelPrefab_Reflection()
|
||||||
{
|
{
|
||||||
// 获取 LevelManager 实例
|
// 获取 LevelManager 实例
|
||||||
@@ -130,5 +245,58 @@ namespace CharacterPreview
|
|||||||
}
|
}
|
||||||
return modelPrefab;
|
return modelPrefab;
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 检查指定全限定类名的类型是否存在于已加载的程序集中。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="fullTypeName">完整类名,如 "DuckovCustomModel.ModBehaviour"</param>
|
||||||
|
/// <returns>如果存在返回 true,否则 false</returns>
|
||||||
|
public static bool IsTypeLoaded(string fullTypeName)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(fullTypeName))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 先尝试用 Type.GetType(适用于 mscorlib 和当前程序集)
|
||||||
|
var type = Type.GetType(fullTypeName, throwOnError: false, ignoreCase: false);
|
||||||
|
if (type != null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// 遍历所有已加载的程序集
|
||||||
|
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||||
|
foreach (var assembly in assemblies)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
type = assembly.GetType(fullTypeName, throwOnError: false, ignoreCase: false);
|
||||||
|
if (type != null)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
// 某些程序集可能无法读取(如动态生成、权限问题等),跳过
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CharacterMainControl CreateCharacter(
|
||||||
|
Item itemInstance,
|
||||||
|
CharacterModel modelPrefab,
|
||||||
|
Vector3 pos,
|
||||||
|
Quaternion rotation)
|
||||||
|
{
|
||||||
|
var character = Instantiate(GameplayDataSettings.Prefabs.CharacterPrefab, pos, rotation);
|
||||||
|
var _characterModel = Instantiate(modelPrefab);
|
||||||
|
character.SetCharacterModel(_characterModel);
|
||||||
|
if (itemInstance == null)
|
||||||
|
{
|
||||||
|
if ((bool) (Object) character)
|
||||||
|
Destroy(character.gameObject);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
character.SetItem(itemInstance);
|
||||||
|
return character;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,12 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace CharacterPreview
|
namespace CharacterPreview
|
||||||
{
|
{
|
||||||
public class ModelMove:MonoBehaviour
|
public class ModelMove : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
// 摄像机属性
|
||||||
private Camera _camera;
|
private Camera _camera;
|
||||||
public Camera currentCamera
|
|
||||||
|
public Camera CurrentCamera
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@@ -18,36 +20,280 @@ namespace CharacterPreview
|
|||||||
_camera = FindObjectOfType<Camera>();
|
_camera = FindObjectOfType<Camera>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return _camera;
|
return _camera;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vector2 horizontalMoveRange = new Vector2(-1f, 2f); // X轴范围
|
||||||
|
public Vector2 verticalMoveRange = new Vector2(-2f, 2f); // Y轴范围
|
||||||
|
public Vector2 depthMoveRange = new Vector2(-1, 10f); // Z轴范围 (深度)
|
||||||
|
|
||||||
|
public Vector2 scaleRange = new Vector2(0.5f, 3f); // 缩放范围 (x=min, y=max)
|
||||||
|
|
||||||
|
// 初始状态变量
|
||||||
|
private Vector3 _initialScale = Vector3.one;
|
||||||
|
|
||||||
|
private Quaternion _initialRotation = Quaternion.identity;
|
||||||
|
|
||||||
|
// 模型相对于摄像机的初始局部位置偏移量
|
||||||
|
private Vector3 _initialCameraLocalOffset;
|
||||||
|
|
||||||
|
// 用于Input输入的控制器对象
|
||||||
|
private GameObject _controlModelMoveGameObject;
|
||||||
|
|
||||||
|
public bool CanFix => ModBehaviour.config.data.canEdit;
|
||||||
|
|
||||||
|
// 模型在摄像机局部空间中的默认位置偏移量 (用于Reset)
|
||||||
|
public static readonly Vector3 DefaultCameraLocalOffset = new Vector3(0.38f, -0.92f, 2.00f);
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
EnsureControlModelMoveGameObject();
|
||||||
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
if (currentCamera)
|
if (ModBehaviour.config.data.use)
|
||||||
{
|
{
|
||||||
var worldPos = CameraLocalToWorld(currentCamera, new Vector3(1, -1, 1));
|
ApplyConfig();
|
||||||
transform.position = worldPos;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
transform.position = new Vector3(8, 8, -16);
|
RefreshPosition();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
// // 调试功能,按下 "-" 打印模型相对于摄像机的局部位置
|
||||||
|
// if (Input.GetKeyDown(KeyCode.Minus))
|
||||||
|
// {
|
||||||
|
// if (CurrentCamera)
|
||||||
|
// {
|
||||||
|
// var localPositionRelativeToCamera =
|
||||||
|
// CurrentCamera.transform.InverseTransformPoint(transform.position);
|
||||||
|
// Debug.Log($"模型相对于摄像机的局部位置: {localPositionRelativeToCamera}");
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// Debug.LogWarning("找不到摄像机,无法计算局部位置。模型的全局位置为: " + transform.position);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
// 销毁时清理生成的控制器GameObject
|
||||||
|
if (_controlModelMoveGameObject)
|
||||||
|
{
|
||||||
|
Destroy(_controlModelMoveGameObject);
|
||||||
|
_controlModelMoveGameObject = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 将摄像机局部坐标系中的点转换为世界坐标系中的点。
|
/// 确保ControlModelMove GameObject存在并绑定脚本。
|
||||||
/// 假设摄像机局部坐标系:前向为 +Z,右为 +X,上为 +Y。
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="camera">目标摄像机</param>
|
private void EnsureControlModelMoveGameObject()
|
||||||
/// <param name="localPoint">在摄像机局部坐标系中的点</param>
|
{
|
||||||
/// <returns>对应的世界坐标</returns>
|
if (_controlModelMoveGameObject == null)
|
||||||
|
{
|
||||||
|
// 尝试查找场景中已有的ControlModelMove
|
||||||
|
_controlModelMoveGameObject = GameObject.Find("ControlModelMove");
|
||||||
|
if (_controlModelMoveGameObject == null)
|
||||||
|
{
|
||||||
|
// 如果没有,则创建新的
|
||||||
|
_controlModelMoveGameObject = new GameObject("ControlModelMove");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保ControlModelMove组件已添加
|
||||||
|
if (_controlModelMoveGameObject.GetComponent<ControlModelMove>() == null)
|
||||||
|
{
|
||||||
|
_controlModelMoveGameObject.AddComponent<ControlModelMove>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 将模型朝向当前摄像机。
|
||||||
|
/// </summary>
|
||||||
|
public void LookAtCamera()
|
||||||
|
{
|
||||||
|
if(!CanFix)
|
||||||
|
return;
|
||||||
|
if (CurrentCamera)
|
||||||
|
{
|
||||||
|
transform.LookAt(CurrentCamera.transform);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning("ModelMove.LookAtCamera: 找不到摄像机,无法使模型朝向摄像机。");
|
||||||
|
}
|
||||||
|
SaveDataToConfig();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重置模型的位置、旋转和缩放
|
||||||
|
/// </summary>
|
||||||
|
public void RefreshPosition()
|
||||||
|
{
|
||||||
|
if(!CanFix)
|
||||||
|
return;
|
||||||
|
// 重置缩放和旋转到初始状态
|
||||||
|
transform.localScale = _initialScale;
|
||||||
|
transform.rotation = _initialRotation;
|
||||||
|
|
||||||
|
if (CurrentCamera)
|
||||||
|
{
|
||||||
|
// 计算模型在世界空间中相对于摄像机的默认位置
|
||||||
|
var worldPos = CameraLocalToWorld(CurrentCamera, DefaultCameraLocalOffset);
|
||||||
|
transform.position = worldPos;
|
||||||
|
|
||||||
|
// 使模型朝向摄像机
|
||||||
|
LookAtCamera();
|
||||||
|
|
||||||
|
// 记录模型重置后的相对于摄像机的局部偏移量,作为后续移动的基准
|
||||||
|
_initialCameraLocalOffset = CurrentCamera.transform.InverseTransformPoint(transform.position);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning("ModelMove.RefreshPosition: 找不到摄像机。模型将保持其当前世界位置,且相机相对移动功能将无法正常工作。");
|
||||||
|
_initialCameraLocalOffset = transform.position;
|
||||||
|
transform.position = new Vector3(8, 8, -16);
|
||||||
|
}
|
||||||
|
SaveDataToConfig();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 移动模型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="shift">相对于当前总偏移量的位移增量(在摄像机局部坐标系下)</param>
|
||||||
|
public void Move(Vector3 shift)
|
||||||
|
{
|
||||||
|
if(!CanFix)
|
||||||
|
return;
|
||||||
|
if (!CurrentCamera)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("ModelMove.Move: 找不到摄像机,无法执行相机相对移动。");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var currentLocalPos = CurrentCamera.transform.InverseTransformPoint(transform.position);
|
||||||
|
var currentOffsetFromInitial = currentLocalPos - _initialCameraLocalOffset;
|
||||||
|
var targetOffsetFromInitial = currentOffsetFromInitial + shift;
|
||||||
|
targetOffsetFromInitial.x = Mathf.Clamp(targetOffsetFromInitial.x, horizontalMoveRange.x, horizontalMoveRange.y);
|
||||||
|
targetOffsetFromInitial.y = Mathf.Clamp(targetOffsetFromInitial.y, verticalMoveRange.x, verticalMoveRange.y);
|
||||||
|
targetOffsetFromInitial.z = Mathf.Clamp(targetOffsetFromInitial.z, depthMoveRange.x, depthMoveRange.y);
|
||||||
|
|
||||||
|
var newLocalPos = _initialCameraLocalOffset + targetOffsetFromInitial;
|
||||||
|
|
||||||
|
transform.position = CurrentCamera.transform.TransformPoint(newLocalPos);
|
||||||
|
|
||||||
|
SaveDataToConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 等比例缩放模型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="increment">缩放增量,通常来自鼠标滚轮或UI滑块</param>
|
||||||
|
public void Scale(float increment)
|
||||||
|
{
|
||||||
|
if(!CanFix)
|
||||||
|
return;
|
||||||
|
// 假设是等比例缩放,所以只取x轴的值来计算
|
||||||
|
var currentScale = transform.localScale.x;
|
||||||
|
var newScale = currentScale + increment;
|
||||||
|
|
||||||
|
// 将新的缩放值限制在预设范围内
|
||||||
|
newScale = Mathf.Clamp(newScale, scaleRange.x, scaleRange.y);
|
||||||
|
|
||||||
|
// 应用新的等比例缩放值
|
||||||
|
SaveDataToConfig();
|
||||||
|
transform.localScale = new Vector3(newScale, newScale, newScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 旋转模型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="rotationAmount">旋转量,通常来自鼠标拖拽的偏移量(delta)</param>
|
||||||
|
public void Rotate(Vector2 rotationAmount)
|
||||||
|
{
|
||||||
|
if(!CanFix)
|
||||||
|
return;
|
||||||
|
// 左右拖拽(rotationAmount.x)时,围绕世界坐标的Y轴旋转,使模型保持直立
|
||||||
|
transform.Rotate(Vector3.up, -rotationAmount.x * Time.deltaTime, Space.World);
|
||||||
|
|
||||||
|
if (CurrentCamera)
|
||||||
|
{
|
||||||
|
// 上下拖拽(rotationAmount.y)时,围绕摄像机的右方向轴旋转,感觉更自然
|
||||||
|
transform.Rotate(CurrentCamera.transform.right, rotationAmount.y * Time.deltaTime, Space.World);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 如果找不到相机,则退而求其次,围绕世界坐标的X轴旋转
|
||||||
|
Debug.LogWarning("ModelMove.Rotate: 找不到摄像机,上下旋转将使用世界X轴。");
|
||||||
|
transform.Rotate(Vector3.right, rotationAmount.y * Time.deltaTime, Space.World);
|
||||||
|
}
|
||||||
|
SaveDataToConfig();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 沿摄像机的Z轴(朝向)旋转模型,实现“滚动”或“倾斜”效果。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="angle">要旋转的角度。正值通常为顺时针,负值为逆时针。</param>
|
||||||
|
public void RotateAroundCameraZ(float angle)
|
||||||
|
{
|
||||||
|
if(!CanFix)
|
||||||
|
return;
|
||||||
|
if (CurrentCamera == null)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("ModelMove.RotateAroundCameraZ: 无法执行围绕相机Z轴的旋转,因为找不到相机。");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rotationAxis = CurrentCamera.transform.forward;
|
||||||
|
transform.Rotate(rotationAxis, angle, Space.World);
|
||||||
|
SaveDataToConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveDataToConfig()
|
||||||
|
{
|
||||||
|
var configData = ModBehaviour.config.data;
|
||||||
|
configData.modelPosition = CurrentCamera.transform.InverseTransformPoint(transform.position);
|
||||||
|
configData.modelRotation = transform.eulerAngles;
|
||||||
|
configData.modelScale = CurrentCamera.transform.localScale.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ApplyConfig()
|
||||||
|
{
|
||||||
|
var configData = ModBehaviour.config.data;
|
||||||
|
transform.position = CameraLocalToWorld(CurrentCamera, configData.modelPosition);
|
||||||
|
transform.eulerAngles = configData.modelRotation;
|
||||||
|
transform.localScale = new Vector3(configData.modelScale, configData.modelScale, configData.modelScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 将摄像机局部空间中的点转换为世界空间中的点。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="camera">参考摄像机。</param>
|
||||||
|
/// <param name="localPoint">摄像机局部空间中的点。</param>
|
||||||
|
/// <returns>世界空间中的点。</returns>
|
||||||
public static Vector3 CameraLocalToWorld(Camera camera, Vector3 localPoint)
|
public static Vector3 CameraLocalToWorld(Camera camera, Vector3 localPoint)
|
||||||
{
|
{
|
||||||
if (camera == null)
|
if (camera == null)
|
||||||
throw new System.ArgumentNullException(nameof(camera));
|
throw new ArgumentNullException(nameof(camera),
|
||||||
|
"Camera cannot be null for CameraLocalToWorld conversion.");
|
||||||
|
|
||||||
Transform camTransform = camera.transform;
|
var camTransform = camera.transform;
|
||||||
// 旋转局部点到世界方向,然后加上摄像机位置
|
|
||||||
return camTransform.position + camTransform.rotation * localPoint;
|
return camTransform.position + camTransform.rotation * localPoint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
21
CharacterPreview/ShowListen.cs
Normal file
21
CharacterPreview/ShowListen.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using Cysharp.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CharacterPreview
|
||||||
|
{
|
||||||
|
public class ShowListen:MonoBehaviour
|
||||||
|
{
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_ = ModBehaviour.CreateCharacterModel();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError($"创建角色模型失败: {ex}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
3bcd831ea4f29882c4ad0e74553f21cd67857c5ac8ecf673bf0a5c0e6b28519c
|
a35a52a5782dcfa53768ea1eb0acd5bd17c1e3d2dfc5d618e23c884a1a098d9e
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
c29902ba5d072858998bd0700a0022b61d2b982553e1d41c36961a930ba99211
|
9ceb1c845a1b18d2def0bf1eea585e3dc69eb9cff9872b77a69643b5e6fc7903
|
||||||
|
|||||||
@@ -5,4 +5,3 @@ D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\CharacterPreview.AssemblyInf
|
|||||||
D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\CharacterPreview.AssemblyInfo.cs
|
D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\CharacterPreview.AssemblyInfo.cs
|
||||||
D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\CharacterPreview.csproj.CoreCompileInputs.cache
|
D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\CharacterPreview.csproj.CoreCompileInputs.cache
|
||||||
D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\CharacterPreview.dll
|
D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\CharacterPreview.dll
|
||||||
D:\vs_project\DuckovMods\CharacterPreview\obj\Debug\Characte.69A9E5B8.Up2Date
|
|
||||||
|
|||||||
Binary file not shown.
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
cdbee0654e5bd2c9896d77407e3d7ce5ae6183e3f37c36106e534970cbdd063c
|
2dcee58ea3d10e33f69ccfa06e1fe3a4fe22d6ce0e9a2c07a40e5dff5a0c39dd
|
||||||
|
|||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
356db5ad935a1120367a47fbf381e8f0de76f293776515bb91fa0b0cadad25c7
|
c0134ee1afbfeb7d9ea2fc05c8c4e57fa94629a377c1dde9e9b9bbb913bac608
|
||||||
|
|||||||
Binary file not shown.
@@ -6,11 +6,17 @@
|
|||||||
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3590674339_005CModConfig_002Edll/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3590674339_005CModConfig_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3591672666_005Cqingye_002Edll/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3591672666_005Cqingye_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3596659565_005CCustomQuack_002Edll/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3596659565_005CCustomQuack_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3599429514_005CCharacterIzuna_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3600560151_005CDuckovCustomModel_002ECore_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3600560151_005CDuckovCustomModel_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Csteam_005Csteamapps_005Cworkshop_005Ccontent_005C3167020_005C3600560151_005CDuckovCustomModel_002EGameModules_002Edll/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAIMainBrain_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F9a_003F06cede9f_003FAIMainBrain_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAIMainBrain_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F9a_003F06cede9f_003FAIMainBrain_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAIMainBrain_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F52_003F7c426cea_003FAIMainBrain_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAIMainBrain_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F52_003F7c426cea_003FAIMainBrain_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAimTargetFinder_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fa9_003F4ac92f25_003FAimTargetFinder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAimTargetFinder_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fa9_003F4ac92f25_003FAimTargetFinder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAssembly_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2bc5ed240d5c402c8b6abd14ffcee26791db88_003F31_003Fe5abc737_003FAssembly_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAudioManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F95_003F5092a809_003FAudioManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAudioManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F95_003F5092a809_003FAudioManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003Fc1_003Faa1a31b2_003FBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003Fc1_003Faa1a31b2_003FBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABlackScreen_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F62_003Fd4fcffde_003FBlackScreen_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABlackScreen_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F83_003Fdd84d8e1_003FBlackScreen_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABlackScreen_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F83_003Fdd84d8e1_003FBlackScreen_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABuffsDisplay_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F72_003F6940c184_003FBuffsDisplay_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABuffsDisplay_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F72_003F6940c184_003FBuffsDisplay_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABuff_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fc9_003F95f738f9_003FBuff_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABuff_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fc9_003F95f738f9_003FBuff_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
@@ -18,6 +24,7 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACameraArmControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Ff5_003F4622470d_003FCameraArmControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACameraArmControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Ff5_003F4622470d_003FCameraArmControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACameraArm_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fdc_003Fc73e8a9f_003FCameraArm_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACameraArm_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fdc_003Fc73e8a9f_003FCameraArm_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACameraArm_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff6_003F5678008c_003FCameraArm_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACameraArm_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff6_003F5678008c_003FCameraArm_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterAnimationControl_005FMagicBlend_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F69_003F48d1fd4f_003FCharacterAnimationControl_005FMagicBlend_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterCreator_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F06_003Ff3fe5490_003FCharacterCreator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterCreator_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F06_003Ff3fe5490_003FCharacterCreator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterCreator_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F2d_003Fdafe66b2_003FCharacterCreator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterCreator_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F2d_003Fdafe66b2_003FCharacterCreator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterCreator_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fd3_003F2e360998_003FCharacterCreator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterCreator_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fd3_003F2e360998_003FCharacterCreator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
@@ -25,14 +32,20 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterMainControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F2c_003Fe5626d7e_003FCharacterMainControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterMainControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F2c_003Fe5626d7e_003FCharacterMainControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterMainControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F3e_003Fdd1453e6_003FCharacterMainControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterMainControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F3e_003Fdd1453e6_003FCharacterMainControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterMainControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F4c_003Faffc257a_003FCharacterMainControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterMainControl_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F4c_003Faffc257a_003FCharacterMainControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterModel_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F59_003F9266675b_003FCharacterModel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterRandomPreset_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Fc9_003F606976e3_003FCharacterRandomPreset_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterRandomPreset_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fd5_003Fb696ff66_003FCharacterRandomPreset_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterRandomPreset_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fd5_003Fb696ff66_003FCharacterRandomPreset_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConfigManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4b1e96d83e40723ba3f28167886c0a7f741af767cb5e1875bed6340c9fdf3a_003FConfigManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConstant_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F30a5524d7f498d1bec81b5e5f58e3aa440082ae311a90213325fe8f44084_003FConstant_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACopyTextButton_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fc4_003F9995fb11_003FCopyTextButton_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACopyTextButton_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fc4_003F9995fb11_003FCopyTextButton_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACustomFaceInstance_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F5d_003F39ead7d8_003FCustomFaceInstance_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACustomFaceInstance_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F5d_003F39ead7d8_003FCustomFaceInstance_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACustomFaceInstance_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff5_003F7e299618_003FCustomFaceInstance_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACustomFaceInstance_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff5_003F7e299618_003FCustomFaceInstance_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACustomFaceManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Ffe_003F78a87e79_003FCustomFaceManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACustomFaceManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Ffe_003F78a87e79_003FCustomFaceManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADamageInfo_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F0b_003F36368d2b_003FDamageInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADamageInfo_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F0b_003F36368d2b_003FDamageInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADamageTypes_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Faf_003Fe7c272fb_003FDamageTypes_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADamageTypes_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Faf_003Fe7c272fb_003FDamageTypes_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADebugManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb02e352b027d497b8571da05e536c2f682000_003Fe6_003F0a55a8d7_003FDebugManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADuckovScreenCapturer_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F59_003F92754824_003FDuckovScreenCapturer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADuckovScreenCapturer_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F59_003F92754824_003FDuckovScreenCapturer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEventSystem_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc5cfaab0e1d24cfeb3c73b55e9a4f72b40c00_003F99_003F879c7f70_003FEventSystem_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFadeElement_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F9b_003Fbe78cf8b_003FFadeElement_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFadeElement_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F9b_003Fbe78cf8b_003FFadeElement_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFadeGroup_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F4e_003F69f8fcae_003FFadeGroup_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFadeGroup_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F4e_003F69f8fcae_003FFadeGroup_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFogOfWarManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fd3_003Fb21152a5_003FFogOfWarManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFogOfWarManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fd3_003Fb21152a5_003FFogOfWarManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
@@ -41,27 +54,44 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F94_003Fdd33b16b_003FGameManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F94_003Fdd33b16b_003FGameManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameObject_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F52_003F998640fe_003FGameObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameObject_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F52_003F998640fe_003FGameObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameplayDataSettings_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fa4_003Ffea6779d_003FGameplayDataSettings_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameplayDataSettings_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fa4_003Ffea6779d_003FGameplayDataSettings_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameplayDataSettings_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F55_003F21969a4b_003FGameplayDataSettings_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameplayDataSettings_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F1f_003F8b814bde_003FGameplayDataSettings_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameplayDataSettings_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F1f_003F8b814bde_003FGameplayDataSettings_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameplayUIManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fcc_003Fe767eb5a_003FGameplayUIManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameplayUIManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fcc_003Fe767eb5a_003FGameplayUIManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameRulesManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fb1_003Ff82c3168_003FGameRulesManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGameRulesManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fb1_003Ff82c3168_003FGameRulesManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHarmonyLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fea4edbee2cb3c8675e39a67ad559e461525f6ee7235c385e25a68da4aa9f3_003FHarmonyLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHarmonyPatch_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8e06e6c4d12e4db29fecbb8a1ed2864918400_003F11_003F77145916_003FHarmonyPatch_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHarmonyPatch_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8e06e6c4d12e4db29fecbb8a1ed2864918400_003F11_003F77145916_003FHarmonyPatch_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInputManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F26_003F732d33cb_003FInputManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInventoryData_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F71a3d79537274de2b084d0fd207549d617200_003F5e_003F6152b6b7_003FInventoryData_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInventoryData_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F71a3d79537274de2b084d0fd207549d617200_003F5e_003F6152b6b7_003FInventoryData_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AItemDisplay_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F73_003Fa6db3a6c_003FItemDisplay_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AItemDisplay_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F73_003Fa6db3a6c_003FItemDisplay_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AItemSavesUtilities_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Fe6_003F83a39c27_003FItemSavesUtilities_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALevelConfig_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fcc_003Fcfd90334_003FLevelConfig_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALevelConfig_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003Fcc_003Fcfd90334_003FLevelConfig_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALevelManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Ff1_003F866b116e_003FLevelManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALevelManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Ff1_003F866b116e_003FLevelManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALevelManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe0_003F6f24caa1_003FLevelManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALevelManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe0_003F6f24caa1_003FLevelManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALocalizationDataModel_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003F79_003F52786d7e_003FLocalizationDataModel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALocalizationDataModel_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003F79_003F52786d7e_003FLocalizationDataModel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALocalizationManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003F2c_003Ff9202561_003FLocalizationManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALocalizationManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003F2c_003Ff9202561_003FLocalizationManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ALocalization_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3e16ded3f21451a1c36f19b36e4848a2a6c664ab5a459ec66f4f663fc6f2b6_003FLocalization_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainCharacterStatValueDisplay_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F08_003Fd04928fd_003FMainCharacterStatValueDisplay_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainCharacterStatValueDisplay_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F08_003Fd04928fd_003FMainCharacterStatValueDisplay_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainMenuCamera_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Fdc_003F4aa81a69_003FMainMenuCamera_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainMenuCamera_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Fdc_003F4aa81a69_003FMainMenuCamera_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainMenu_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F72_003F2cdb714d_003FMainMenu_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainMenu_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F72_003F2cdb714d_003FMainMenu_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainMenu_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F21_003F0ec534a6_003FMainMenu_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMainMenu_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F21_003F0ec534a6_003FMainMenu_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F15eaac0daac842bca117926c0c9be2781a00_003F37_003Fa09d99b2_003FModBehaviour_002Ecs_002Fz_003A4_002D3/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F15eaac0daac842bca117926c0c9be2781a00_003F37_003Fa09d99b2_003FModBehaviour_002Ecs_002Fz_003A4_002D3/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2576bc5c328e49adb3eb5fc3c914a4544600_003Fb4_003Fa1f05223_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4784c8b601ed4e3c93b990a18b8bd7a4a800_003F3e_003Fb80788cb_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4784c8b601ed4e3c93b990a18b8bd7a4a800_003F3e_003Fb80788cb_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff3_003Ff5f2b19a_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff3_003Ff5f2b19a_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Faf3c3aa7ce14487c914dade28d96504e70a00_003F26_003Fe998e749_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Faf3c3aa7ce14487c914dade28d96504e70a00_003F26_003Fe998e749_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe495fb8cdd21493497febf8ce397a8d71400_003F4a_003F0c719bc6_003FModBehaviour_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe495fb8cdd21493497febf8ce397a8d71400_003F4a_003F0c719bc6_003FModBehaviour_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff38c631c761d815c597f4ac13b877f5ac5a9341f8932d31d2dc7f87ddfd159_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModelHandler_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3efbeee73bde1c365962611930da5fbdc1162b791aa563e78e6d49901f2b_003FModelHandler_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModelInfo_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F33793f39d20317172713cd91860358cfd5e2efeae28cbd2b3b87a37b4cb2_003FModelInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModelListManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F41d02c4a2db7d9141abf815ad27e337e6f7e6edf3816bcc2a6797ca5cdf_003FModelListManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModelTarget_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F238e312a614ee6d46bfb2a691ae5d2db9d90d429faa73e880624e28e2c0922b_003FModelTarget_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModEntry_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5193603f30474f129ab2e32f9421b04e2f400_003F32_003F20a650c9_003FModEntry_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModEntry_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5193603f30474f129ab2e32f9421b04e2f400_003F32_003F20a650c9_003FModEntry_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModEntry_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fd88ffd86a8668ed6682fd44eb522fc9d48a4c236bb72c18388222a8fb390a8_003FModEntry_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModInfo_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F3c_003F9c6fe4cd_003FModInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModInfo_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F3c_003F9c6fe4cd_003FModInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F8cc7d3b3c55e278feec015d8a76d68a7d4671624d0ccfb9e3563ea43d6d5a7a_003FModLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModLogger_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F15e3577ebca54bf713c697676a81da8c5a3cf88bdd27bfa8ae3f468b644d13_003FModLogger_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F4c_003F3b41863d_003FModManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe5_003Ff729e34a_003FModManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe5_003Ff729e34a_003FModManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMonoBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F02_003F65608a5e_003FMonoBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMonoBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F02_003F65608a5e_003FMonoBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMultiInteractionMenu_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F88_003F0d34c6e2_003FMultiInteractionMenu_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMultiInteractionMenu_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003F88_003F0d34c6e2_003FMultiInteractionMenu_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
@@ -72,15 +102,20 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AOcclusionFadeManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F70_003F6aba3c97_003FOcclusionFadeManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AOcclusionFadeManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F492b6cef9eac4cd497c1ffcbfcb9161f197200_003F70_003F6aba3c97_003FOcclusionFadeManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AOnPointerClick_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F25_003Fba6ddb49_003FOnPointerClick_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AOnPointerClick_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F25_003Fba6ddb49_003FOnPointerClick_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AOptionsPanel_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe1_003Fac8e1feb_003FOptionsPanel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AOptionsPanel_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe1_003Fac8e1feb_003FOptionsPanel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AOutline_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc5cfaab0e1d24cfeb3c73b55e9a4f72b40c00_003F22_003F77407fec_003FOutline_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APauseMenu_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Fbe_003Faca9be37_003FPauseMenu_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APrefabPool_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2fb2e03687cc4f6182420d823a41eca07200_003F05_003F8982f5f5_003FPrefabPool_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APrefabPool_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2fb2e03687cc4f6182420d823a41eca07200_003F05_003F8982f5f5_003FPrefabPool_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASceneLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Fdd_003Fa610281f_003FSceneLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASceneLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003Fdd_003Fa610281f_003FSceneLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASceneLoadingContext_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fbf_003F2b3732af_003FSceneLoadingContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASceneLoadingContext_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fbf_003F2b3732af_003FSceneLoadingContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AScriptableObject_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F4d_003F1a33cb14_003FScriptableObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AScriptableObject_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F4d_003F1a33cb14_003FScriptableObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASlot_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F891999c761c24c49afb16405089f08e817400_003Fa1_003F8574f295_003FSlot_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASpriteRendererLocalizor_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003F8f_003F9f8025e8_003FSpriteRendererLocalizor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASpriteRendererLocalizor_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003F8f_003F9f8025e8_003FSpriteRendererLocalizor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASystemLanguage_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F5f_003Ffb4a10f4_003FSystemLanguage_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASystemLanguage_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc39a522eee05469b8171a6cfeb646c591543b0_003F5f_003Ffb4a10f4_003FSystemLanguage_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATextLocalizor_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003Fce_003F46f8a570_003FTextLocalizor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATextLocalizor_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85f08cf721894642b6034bb4eee4d75b4000_003Fce_003F46f8a570_003FTextLocalizor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATitle_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe8_003F42124cdd_003FTitle_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATitle_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fe8_003F42124cdd_003FTitle_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUIInputManager_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F20_003Fd367484d_003FUIInputManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUIPrefabsReference_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fb5_003F49d2159e_003FUIPrefabsReference_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUIPrefabsReference_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Fb5_003F49d2159e_003FUIPrefabsReference_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUsingModel_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5193603f30474f129ab2e32f9421b04e2f400_003F9b_003F1fe92a0a_003FUsingModel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AVolumeComponent_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb02e352b027d497b8571da05e536c2f682000_003F36_003F74cee2c4_003FVolumeComponent_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AVolumeComponent_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb02e352b027d497b8571da05e536c2f682000_003F36_003F74cee2c4_003FVolumeComponent_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AVolume_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb02e352b027d497b8571da05e536c2f682000_003Ffa_003F02e0206c_003FVolume_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AVolume_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb02e352b027d497b8571da05e536c2f682000_003Ffa_003F02e0206c_003FVolume_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A_005F003CModule_005F003E_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Faf3c3aa7ce14487c914dade28d96504e70a00_003F9c_003Ff3cdecda_003F_005F003CModule_005F003E_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A_005F003CModule_005F003E_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Faf3c3aa7ce14487c914dade28d96504e70a00_003F9c_003Ff3cdecda_003F_005F003CModule_005F003E_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
|
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
dc9e2512ec7accc32370dea781198b720358eb9814b7c9c591d009607f13a5e8
|
2a2aab917c9869a2c45025a35579f7c6e03404be00ce574a62d12c32df38a826
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
|
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
71229c5bb112e72727f560fc4c2dcb61c8790b85769f99a1131c10e137989a56
|
5947386f6162b5b02c7300baa77b21c77fa4ed061a138d3fc81f970ad239b319
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyProductAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
368a9f7418aefa097e80abe04f0e70d25ca97877e818b633d54a07496a4eb4d6
|
443c8a898256e461af19611af44d76c4c5616c60885973a9cda418947ee407d3
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyProductAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
11eb56433e596da88b772bc3383f597712eafe48622740bf0786e8030e13d6e9
|
91dac8144f7f4643815b8939a0d98f00568590da27297be94ea52497a9430f21
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")]
|
[assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
993bfd6f35451c9a8b17b20fe9cf49f2468dd9f29516d3ea773a01d0f4d44c33
|
590d57221818e8b762b4140d886b2c5824a0053ca74f5a40c363ae1a24c1039f
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")]
|
[assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ca1555b48da049a281894ed9d271c1d8ac9ceef6558c6d583a8608bf7fa55818
|
9bf7075992c2ab1ad22b59ed877ab0388f5a130c6bb74696247e17e3ba773369
|
||||||
|
|||||||
@@ -29,7 +29,11 @@ namespace SceneView
|
|||||||
Destroy(outline);
|
Destroy(outline);
|
||||||
}
|
}
|
||||||
_focusObject = value;
|
_focusObject = value;
|
||||||
_focusObject.AddComponent<Outline>();
|
var outlineNew= _focusObject.AddComponent<Outline>();
|
||||||
|
outlineNew.effectColor = Color.blue;
|
||||||
|
outlineNew.effectDistance = new Vector2(1, -1);
|
||||||
|
outlineNew.useGraphicAlpha = true;
|
||||||
|
|
||||||
OnChangeFocusObject?.Invoke(value);
|
OnChangeFocusObject?.Invoke(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ namespace SceneView
|
|||||||
// root.transform.SetParent(content.transform, false);
|
// root.transform.SetParent(content.transform, false);
|
||||||
|
|
||||||
treeViewNode = content.AddComponent<TreeViewNode>();
|
treeViewNode = content.AddComponent<TreeViewNode>();
|
||||||
treeViewNode.UpdateHeight();
|
// treeViewNode.UpdateHeight();
|
||||||
|
|
||||||
// var vLayout = content.AddComponent<VerticalLayoutGroup>();
|
// var vLayout = content.AddComponent<VerticalLayoutGroup>();
|
||||||
// vLayout.padding = new RectOffset(2, 2, 2, 2);
|
// vLayout.padding = new RectOffset(2, 2, 2, 2);
|
||||||
@@ -155,8 +155,9 @@ namespace SceneView
|
|||||||
Debug.LogError($"{currentAimObj} not found.");
|
Debug.LogError($"{currentAimObj} not found.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
treeViewNode.ClearChildNodes();
|
||||||
StartCoroutine(treeViewNode.DisplayGameObjectStructureCoroutine(canvas));
|
StartCoroutine(treeViewNode.InitializeNode(canvas));
|
||||||
|
// StartCoroutine(treeViewNode.DisplayGameObjectStructureCoroutine(canvas));
|
||||||
// treeViewNode.DisplayGameObjectStructure(canvas);
|
// treeViewNode.DisplayGameObjectStructure(canvas);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,9 @@ namespace SceneView
|
|||||||
public float buttonHeight = 50;
|
public float buttonHeight = 50;
|
||||||
|
|
||||||
private string originalText = "";
|
private string originalText = "";
|
||||||
|
private GameObject? _targetGameObject; // 保存当前节点代表的GameObject
|
||||||
|
private bool _childrenGenerated = false; // 标记子节点和组件是否已经生成
|
||||||
|
private int _nodeDepth = 0; // 当前节点的深度
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
@@ -50,12 +51,14 @@ namespace SceneView
|
|||||||
rectTransform.sizeDelta = new Vector2(0, buttonHeight);
|
rectTransform.sizeDelta = new Vector2(0, buttonHeight);
|
||||||
rectTransform.anchorMin = Vector2.up;
|
rectTransform.anchorMin = Vector2.up;
|
||||||
rectTransform.anchorMax = Vector2.one;
|
rectTransform.anchorMax = Vector2.one;
|
||||||
|
rectTransform.pivot = new Vector2(0.5f, 1); // 确保轴心点在顶部中央,便于布局
|
||||||
|
|
||||||
var buttonConfig = ButtonConfig.Default;
|
var buttonConfig = ButtonConfig.Default;
|
||||||
buttonConfig.RectConfig.Pivot = new Vector2(0.5f, 1);
|
buttonConfig.RectConfig.Pivot = new Vector2(0.5f, 1);
|
||||||
buttonConfig.RectConfig.AnchorMin = new Vector2(0, 1);
|
buttonConfig.RectConfig.AnchorMin = new Vector2(0, 1);
|
||||||
buttonConfig.RectConfig.AnchorMax = new Vector2(1, 1);
|
buttonConfig.RectConfig.AnchorMax = new Vector2(1, 1);
|
||||||
buttonConfig.RectConfig.SizeDelta = new Vector2(0, buttonHeight);
|
buttonConfig.RectConfig.SizeDelta = new Vector2(0, buttonHeight);
|
||||||
|
buttonConfig.BackgroundColor = new Color(0.2f, 0.2f, 0.2f, 1f); // 默认背景色
|
||||||
|
|
||||||
// 创建按钮并检查是否已存在
|
// 创建按钮并检查是否已存在
|
||||||
if (label == null)
|
if (label == null)
|
||||||
@@ -70,6 +73,7 @@ namespace SceneView
|
|||||||
}
|
}
|
||||||
|
|
||||||
text.alignment = TextAlignmentOptions.MidlineLeft;
|
text.alignment = TextAlignmentOptions.MidlineLeft;
|
||||||
|
text.color = Color.white; // 确保文本颜色可见
|
||||||
}
|
}
|
||||||
|
|
||||||
if (objectEnable == null)
|
if (objectEnable == null)
|
||||||
@@ -77,14 +81,15 @@ namespace SceneView
|
|||||||
var button = ControlUtilities.CreateButton(rectTransform, buttonConfig, null);
|
var button = ControlUtilities.CreateButton(rectTransform, buttonConfig, null);
|
||||||
objectEnable = button.button;
|
objectEnable = button.button;
|
||||||
objectText = button.text;
|
objectText = button.text;
|
||||||
button.text.text = "-";
|
objectText.text = ""; // 默认文本为空,使用颜色作指示
|
||||||
button.button.image.color = Color.yellow;
|
objectText.color = Color.black; // 确保文本颜色可见
|
||||||
|
button.button.image.color = Color.yellow; // 默认颜色
|
||||||
var rect = objectEnable.GetComponent<RectTransform>();
|
var rect = objectEnable.GetComponent<RectTransform>();
|
||||||
rect.anchorMin = Vector2.one;
|
rect.anchorMin = Vector2.one;
|
||||||
rect.anchorMax = Vector2.one;
|
rect.anchorMax = Vector2.one;
|
||||||
rect.pivot = Vector2.one / 2;
|
rect.pivot = new Vector2(1, 1); // 右上角锚点
|
||||||
rect.sizeDelta = new Vector2(30, 30);
|
rect.sizeDelta = new Vector2(30, 30);
|
||||||
rect.anchoredPosition = new Vector2(-25, -25);
|
rect.anchoredPosition = new Vector2(-10, -10); // 距离右上角10像素
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查子对象是否存在
|
// 检查子对象是否存在
|
||||||
@@ -116,11 +121,14 @@ namespace SceneView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 确保子内容一开始是隐藏的 (懒加载的初始状态)
|
||||||
|
child.SetActive(false);
|
||||||
|
|
||||||
childRectTransform.anchorMin = new Vector2(0, 1);
|
childRectTransform.anchorMin = new Vector2(0, 1);
|
||||||
childRectTransform.anchorMax = new Vector2(1, 1);
|
childRectTransform.anchorMax = new Vector2(1, 1);
|
||||||
childRectTransform.pivot = new Vector2(0.5f, 1);
|
childRectTransform.pivot = new Vector2(0.5f, 1);
|
||||||
childRectTransform.offsetMax = new Vector2(0, -buttonHeight);
|
childRectTransform.offsetMax = new Vector2(0, -buttonHeight); // 占据主按钮以下的空间
|
||||||
childRectTransform.offsetMin = new Vector2(0, 0);
|
childRectTransform.offsetMin = new Vector2(0, 0); // 确保底部没有额外偏移
|
||||||
|
|
||||||
verticalLayout = child.GetComponent<VerticalLayoutGroup>();
|
verticalLayout = child.GetComponent<VerticalLayoutGroup>();
|
||||||
var sizeFitter = child.GetComponent<ContentSizeFitter>();
|
var sizeFitter = child.GetComponent<ContentSizeFitter>();
|
||||||
@@ -145,120 +153,118 @@ namespace SceneView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 调整布局组参数,确保正确计算
|
||||||
|
verticalLayout.padding.left = (int)(buttonHeight * 0.5f); // 增加左边距以缩进
|
||||||
verticalLayout.padding.top = 2;
|
verticalLayout.padding.top = 2;
|
||||||
verticalLayout.padding.bottom = 4;
|
verticalLayout.padding.bottom = 4;
|
||||||
verticalLayout.spacing = 2;
|
verticalLayout.spacing = 2;
|
||||||
verticalLayout.childControlHeight = false;
|
verticalLayout.childControlHeight = false; // 由ContentSizeFitter控制子节点高度
|
||||||
verticalLayout.childControlWidth = true;
|
verticalLayout.childControlWidth = true; // 子节点宽度按父级宽度自适应
|
||||||
|
verticalLayout.childForceExpandHeight = false; // 不要强制展开高度
|
||||||
|
verticalLayout.childAlignment = TextAnchor.UpperLeft; // 确保子元素从上开始排列
|
||||||
|
|
||||||
sizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
sizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InsertChild(RectTransform childRectTransform)
|
// 修改为只初始化当前节点,不立即生成子内容
|
||||||
|
public IEnumerator InitializeNode(GameObject? targetObject, int depth = 0)
|
||||||
{
|
{
|
||||||
if (child != null && childRectTransform != null)
|
_targetGameObject = targetObject;
|
||||||
// 将子节点添加到 content 容器中
|
_nodeDepth = depth;
|
||||||
childRectTransform.SetParent(child.transform, false);
|
|
||||||
|
// 清除之前的监听器,避免重复
|
||||||
|
label?.onClick.RemoveAllListeners();
|
||||||
|
objectEnable?.onClick.RemoveAllListeners();
|
||||||
|
|
||||||
|
if (targetObject == null) // 代表这是场景根节点
|
||||||
|
{
|
||||||
|
originalText = $"场景 {SceneManager.GetActiveScene().name}";
|
||||||
|
if (text) text.text = originalText + " →"; // 默认收拢,显示右箭头
|
||||||
|
label?.onClick.AddListener(OnExpand); // 场景节点点击展开自身
|
||||||
|
objectEnable?.gameObject.SetActive(false); // 场景节点没有Enable/Disable功能
|
||||||
|
yield break; // 场景节点不立即生成根对象,等待点击展开
|
||||||
|
}
|
||||||
|
|
||||||
|
// 过滤掉特定Canvas
|
||||||
|
if (targetObject == null || targetObject.name == CanvasControl.ViewCanvasName)
|
||||||
|
{
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
|
||||||
|
originalText = GetIndentedName(targetObject.name, depth);
|
||||||
|
if (text != null) text.text = originalText + " →"; // 默认收拢,显示右箭头
|
||||||
|
|
||||||
|
// 注册展开事件
|
||||||
|
label?.onClick.AddListener(OnExpand);
|
||||||
|
|
||||||
|
// 注册对象启用/禁用事件
|
||||||
|
objectEnable?.gameObject.SetActive(true);
|
||||||
|
objectEnable?.onClick.AddListener(() => OnObjectEnable(_targetGameObject, objectEnable, objectText));
|
||||||
|
UpdateObjButton(_targetGameObject, objectEnable, objectText);
|
||||||
|
|
||||||
|
// 确保子内容一开始是隐藏的
|
||||||
|
if (child) child.SetActive(false);
|
||||||
|
yield return StartCoroutine(DelayedUpdateHeight()); // 初始化时异步更新高度
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnExpand(GameObject go)
|
// 修改 OnExpand 方法以实现懒加载
|
||||||
{
|
private void OnExpand()
|
||||||
if (!go) return;
|
|
||||||
CanvasControl.FocusGameObject = go;
|
|
||||||
Expand();
|
|
||||||
}
|
|
||||||
private void Expand()
|
|
||||||
{
|
{
|
||||||
if (child == null)
|
if (child == null)
|
||||||
{
|
{
|
||||||
Debug.LogError("Child content not found.");
|
Debug.LogError("Child content not found.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CanvasControl.FocusGameObject=_targetGameObject;
|
||||||
|
|
||||||
child.SetActive(!child.activeSelf);
|
// 如果已经生成,直接切换显示状态
|
||||||
|
if (_childrenGenerated)
|
||||||
UpdateHeight();
|
|
||||||
|
|
||||||
// 更新名称以模拟动画效果
|
|
||||||
if (child.activeSelf)
|
|
||||||
{
|
{
|
||||||
if (text != null) text.text = originalText + " ↓"; // 下三角符号
|
ToggleExpansionVisuals();
|
||||||
|
StartCoroutine(DelayedUpdateHeight()); // 每次展开/收拢后异步更新高度
|
||||||
}
|
}
|
||||||
else
|
else // 如果子内容未生成,则异步生成
|
||||||
{
|
{
|
||||||
if (text != null) text.text = originalText + " →"; // 右三角符号
|
ToggleExpansionVisuals(); // 生成完成后再切换显示状态 (展开或根据后续逻辑)
|
||||||
|
// 在生成子节点之前,确保子内容容器是激活的
|
||||||
|
child.SetActive(true); // <--- 新增这行,在生成子节点之前激活容器
|
||||||
|
|
||||||
|
StartCoroutine(GenerateChildrenContent(_targetGameObject, _nodeDepth + 1, () =>
|
||||||
|
{
|
||||||
|
_childrenGenerated = true;
|
||||||
|
// 注意:ToggleExpansionVisuals 会再次调用 child.SetActive()
|
||||||
|
// 如果是展开状态,它会保持 true。如果是收拢,则设置为 false。
|
||||||
|
StartCoroutine(DelayedUpdateHeight()); // 生成并展开后异步更新高度
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateHeight()
|
|
||||||
|
// 新增方法:生成子内容(组件和子GameObject)
|
||||||
|
private IEnumerator GenerateChildrenContent(GameObject? targetObject, int depth, Action? onComplete = null)
|
||||||
{
|
{
|
||||||
if (child == null || childRectTransform == null || rectTransform == null)
|
ClearChildNodes(); // 在生成之前清空所有旧的子节点
|
||||||
{
|
|
||||||
Debug.LogError("Failed to update height. Child, ChildRectTransform, or RectTransform is null.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (child.activeSelf)
|
if (targetObject == null) // 场景根节点,需要遍历根GameObject
|
||||||
rectTransform.sizeDelta =
|
|
||||||
new Vector2(rectTransform.sizeDelta.x, buttonHeight + childRectTransform.sizeDelta.y);
|
|
||||||
else
|
|
||||||
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, buttonHeight);
|
|
||||||
|
|
||||||
if (parent != null)
|
|
||||||
{
|
{
|
||||||
LayoutRebuilder.ForceRebuildLayoutImmediate(parent.childRectTransform);
|
|
||||||
parent.UpdateHeight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerator DisplayGameObjectStructureCoroutineImpl(GameObject targetObject, int depth,
|
|
||||||
Action onComplete = null)
|
|
||||||
{
|
|
||||||
if (targetObject == null)
|
|
||||||
{
|
|
||||||
// 如果目标对象为空,则遍历场景中的所有对象
|
|
||||||
var rootObjects = SceneManager.GetActiveScene().GetRootGameObjects();
|
var rootObjects = SceneManager.GetActiveScene().GetRootGameObjects();
|
||||||
var totalRootObjects = rootObjects.Length;
|
|
||||||
var completedRootObjects = 0;
|
|
||||||
originalText = $"场景{SceneManager.GetActiveScene().name}";
|
|
||||||
if (text) text.text = originalText;
|
|
||||||
foreach (var rootObject in rootObjects)
|
foreach (var rootObject in rootObjects)
|
||||||
{
|
{
|
||||||
if (!rootObject) continue;
|
if (!rootObject || rootObject.name == CanvasControl.ViewCanvasName) continue;
|
||||||
var childNode = new GameObject($"{rootObject.name}").AddComponent<TreeViewNode>();
|
|
||||||
|
var childNodeGO = new GameObject(rootObject.name);
|
||||||
|
var childNode = childNodeGO.AddComponent<TreeViewNode>();
|
||||||
childNode.transform.SetParent(childRectTransform, false);
|
childNode.transform.SetParent(childRectTransform, false);
|
||||||
childNode.parent = this;
|
childNode.parent = this;
|
||||||
childNode.CreateUI();
|
childNode.CreateUI(); // 确保UI元素已创建
|
||||||
StartCoroutine(childNode.DisplayGameObjectStructureCoroutineImpl(rootObject, depth + 1,
|
// yield return StartCoroutine(childNode.InitializeNode(rootObject, depth)); // 浅初始化子节点
|
||||||
() =>
|
yield return null; // 每处理一个子节点就yield一次,分散帧压力
|
||||||
{
|
|
||||||
completedRootObjects++;
|
|
||||||
if (completedRootObjects == totalRootObjects)
|
|
||||||
{
|
|
||||||
// 所有根对象及其子对象都已处理完成
|
|
||||||
onComplete?.Invoke();
|
|
||||||
Expand();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
yield return null;
|
|
||||||
}
|
}
|
||||||
|
onComplete?.Invoke();
|
||||||
yield break;
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetObject.name == CanvasControl.ViewCanvasName)
|
// 生成当前GameObject的组件按钮
|
||||||
yield break;
|
|
||||||
|
|
||||||
label?.onClick.RemoveAllListeners();
|
|
||||||
label?.onClick.AddListener(() =>OnExpand(targetObject));
|
|
||||||
ClearChildNodes();
|
|
||||||
|
|
||||||
originalText = GetIndentedName(targetObject.name, depth);
|
|
||||||
if (text != null) text.text = originalText;
|
|
||||||
|
|
||||||
objectEnable.onClick.AddListener(() => OnObjectEnable(targetObject, objectEnable, objectText));
|
|
||||||
UpdateObjButton(targetObject, objectEnable, objectText);
|
|
||||||
|
|
||||||
var components = targetObject.GetComponents<Behaviour>();
|
var components = targetObject.GetComponents<Behaviour>();
|
||||||
foreach (var component in components)
|
foreach (var component in components)
|
||||||
{
|
{
|
||||||
@@ -270,8 +276,9 @@ namespace SceneView
|
|||||||
|
|
||||||
var config = ButtonConfig.Default;
|
var config = ButtonConfig.Default;
|
||||||
config.RectConfig.SizeDelta = new Vector2(0, 40);
|
config.RectConfig.SizeDelta = new Vector2(0, 40);
|
||||||
config.BackgroundColor = Color.green;
|
config.BackgroundColor = component.enabled ? new Color(0.2f, 0.4f, 0.2f, 1f) : new Color(0.4f, 0.2f, 0.2f, 1f); // 根据组件启用状态设置颜色
|
||||||
config.Text = new string(' ', (depth + 1) * 2) + component.GetType().Name;
|
config.Text = GetIndentedName(component.GetType().Name, depth, true); // 组件也需要缩进
|
||||||
|
config.TextColor = Color.white;
|
||||||
var buttonBack = ControlUtilities.CreateButton(childRectTransform, config, null);
|
var buttonBack = ControlUtilities.CreateButton(childRectTransform, config, null);
|
||||||
if (buttonBack.button == null)
|
if (buttonBack.button == null)
|
||||||
{
|
{
|
||||||
@@ -281,16 +288,11 @@ namespace SceneView
|
|||||||
|
|
||||||
var button = buttonBack.button;
|
var button = buttonBack.button;
|
||||||
var comp = component;
|
var comp = component;
|
||||||
buttonBack.button.onClick.AddListener(() => OnButtonClick(button, comp));
|
button.onClick.AddListener(() => OnButtonClick(button, comp));
|
||||||
yield return null;
|
yield return null; // 每创建一个组件按钮就yield一次
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计数器,用于跟踪子协程的数量
|
// 遍历目标对象的所有子对象并创建新的TreeViewNode(浅初始化)
|
||||||
var childCount = targetObject.transform.childCount;
|
|
||||||
var completedChildren = 0;
|
|
||||||
var allChildrenExpanded = false;
|
|
||||||
|
|
||||||
// 遍历目标对象的所有子对象
|
|
||||||
foreach (Transform childTransform in targetObject.transform)
|
foreach (Transform childTransform in targetObject.transform)
|
||||||
{
|
{
|
||||||
if (childTransform == null)
|
if (childTransform == null)
|
||||||
@@ -299,73 +301,119 @@ namespace SceneView
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var childNode = new GameObject($"{childTransform.gameObject.name}").AddComponent<TreeViewNode>();
|
var childNodeGO = new GameObject(childTransform.gameObject.name);
|
||||||
|
var childNode = childNodeGO.AddComponent<TreeViewNode>();
|
||||||
childNode.transform.SetParent(childRectTransform, false);
|
childNode.transform.SetParent(childRectTransform, false);
|
||||||
childNode.parent = this;
|
childNode.parent = this;
|
||||||
childNode.CreateUI();
|
childNode.CreateUI(); // 确保UI元素已创建
|
||||||
StartCoroutine(childNode.DisplayGameObjectStructureCoroutineImpl(childTransform.gameObject, depth + 1,
|
// yield return StartCoroutine(childNode.InitializeNode(childTransform.gameObject, depth)); // 浅初始化子节点
|
||||||
() =>
|
yield return null; // 每处理一个子节点就yield一次
|
||||||
{
|
|
||||||
completedChildren++;
|
|
||||||
if (completedChildren == childCount) allChildrenExpanded = true;
|
|
||||||
}));
|
|
||||||
yield return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 等待所有子协程完成
|
|
||||||
while (!allChildrenExpanded && childCount > 0) yield return null;
|
|
||||||
|
|
||||||
// 调用完成回调
|
|
||||||
onComplete?.Invoke();
|
onComplete?.Invoke();
|
||||||
|
|
||||||
// 在所有子节点初始化完毕后调用Expand
|
|
||||||
Expand();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerator DisplayGameObjectStructureCoroutine(GameObject targetObject, int depth = 0)
|
private void ToggleExpansionVisuals()
|
||||||
{
|
{
|
||||||
yield return DisplayGameObjectStructureCoroutineImpl(targetObject, depth);
|
if (child == null) return;
|
||||||
|
|
||||||
|
// 切换 child 的激活状态
|
||||||
|
child.SetActive(!child.activeSelf);
|
||||||
|
|
||||||
|
if (text != null)
|
||||||
|
{
|
||||||
|
if (child.activeSelf)
|
||||||
|
{
|
||||||
|
text.text = originalText + " ↓"; // 下三角符号表示展开
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text.text = originalText + " →"; // 右三角符号表示收拢
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetIndentedName(string name, int depth)
|
// 异步更新高度,给布局系统一帧时间来计算
|
||||||
|
private IEnumerator DelayedUpdateHeight()
|
||||||
|
{
|
||||||
|
// 等待一帧,让 LayoutGroup 和 ContentSizeFitter 完成计算
|
||||||
|
yield return null;
|
||||||
|
InternalUpdateHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InternalUpdateHeight()
|
||||||
|
{
|
||||||
|
if (rectTransform == null || child == null || childRectTransform == null)
|
||||||
|
{
|
||||||
|
return; // Editor退出时可能为null
|
||||||
|
}
|
||||||
|
|
||||||
|
float currentChildHeight = 0f;
|
||||||
|
if (child.activeSelf && _childrenGenerated)
|
||||||
|
{
|
||||||
|
// 强制重建 childRectTransform 的布局,以获取准确的 PreferredHeight
|
||||||
|
LayoutRebuilder.ForceRebuildLayoutImmediate(childRectTransform);
|
||||||
|
currentChildHeight = LayoutUtility.GetPreferredHeight(childRectTransform);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置主RectTransform的高度 = 按钮高度 + 子内容高度
|
||||||
|
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, buttonHeight + currentChildHeight);
|
||||||
|
|
||||||
|
// Debug.Log($"Node: {gameObject.name}, childActive: {child.activeSelf}, childrenGenerated: {_childrenGenerated}, currentChildHeight: {currentChildHeight}, finalNodeHeight: {rectTransform.sizeDelta.y}");
|
||||||
|
|
||||||
|
// 如果有父节点,通知父节点重新计算布局
|
||||||
|
if (parent != null)
|
||||||
|
{
|
||||||
|
// 强制重建父节点的 childRectTransform 的布局
|
||||||
|
LayoutRebuilder.ForceRebuildLayoutImmediate(parent.childRectTransform);
|
||||||
|
// 递归父节点异步更新高度
|
||||||
|
StartCoroutine(parent.DelayedUpdateHeight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 调整 GetIndentedName 以支持组件类型的缩进
|
||||||
|
private string GetIndentedName(string name, int depth, bool isComponent = false)
|
||||||
{
|
{
|
||||||
var indent = "";
|
var indent = "";
|
||||||
for (var i = 0; i < depth; i++) indent += $"{i}_";
|
int baseIndent = depth; // GameObject的深度
|
||||||
|
if (isComponent) baseIndent++; // 组件比GameObject多一级缩进
|
||||||
|
|
||||||
return $"{indent}_{name}";
|
// 增加额外的左边距,以产生层级感
|
||||||
|
for (var i = 0; i < baseIndent; i++)
|
||||||
|
{
|
||||||
|
indent += " ";
|
||||||
|
}
|
||||||
|
return $"{indent}{name}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ClearChildNodes()
|
public void ClearChildNodes()
|
||||||
{
|
{
|
||||||
if (childRectTransform != null)
|
if (childRectTransform != null)
|
||||||
foreach (Transform childRectTransform in this.childRectTransform)
|
{
|
||||||
Destroy(childRectTransform.gameObject);
|
// 遍历并销毁所有子对象
|
||||||
|
for (int i = childRectTransform.childCount - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
Destroy(childRectTransform.GetChild(i).gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnButtonClick(Button button, Behaviour component)
|
private void OnButtonClick(Button button, Behaviour component)
|
||||||
{
|
{
|
||||||
if (button == null)
|
if (button == null || component == null) return;
|
||||||
{
|
|
||||||
Debug.LogError("button is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (component == null)
|
|
||||||
{
|
|
||||||
Debug.LogError("component is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 切换组件的启用状态
|
// 切换组件的启用状态
|
||||||
var isEnabled = !component.enabled;
|
var isEnabled = !component.enabled;
|
||||||
component.enabled = isEnabled;
|
component.enabled = isEnabled;
|
||||||
// 根据组件的启用状态修改按钮背景颜色
|
// 根据组件的启用状态修改按钮背景颜色
|
||||||
button.image.color = isEnabled ? Color.green : Color.red;
|
button.image.color = isEnabled ? new Color(0.2f, 0.4f, 0.2f, 1f) : new Color(0.4f, 0.2f, 0.2f, 1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnObjectEnable(GameObject gameObject, Button button, TMP_Text text)
|
private void OnObjectEnable(GameObject? gameObject, Button? button, TMP_Text? text)
|
||||||
{
|
{
|
||||||
Debug.Log($"设置{gameObject.name}={!gameObject.activeSelf}");
|
if (gameObject == null || button == null || text == null) return;
|
||||||
|
|
||||||
|
Debug.Log($"设置{gameObject.name} active = {!gameObject.activeSelf}");
|
||||||
gameObject.SetActive(!gameObject.activeSelf);
|
gameObject.SetActive(!gameObject.activeSelf);
|
||||||
UpdateObjButton(gameObject, button, text);
|
UpdateObjButton(gameObject, button, text);
|
||||||
}
|
}
|
||||||
@@ -384,4 +432,5 @@ namespace SceneView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyProductAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
7e4b3c1896ce345529a3ca0711584a8ab9f12be839135a3c4656f53b3d28a5be
|
27d2423ec537faeeea9ad6f4f91f131258e292f1d7b1155cf4c559a110c9b70f
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyProductAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
9dcd4440d4aa7a199613e1563c8a1068a059ca6f9405861608a0463720b13e15
|
ec6dec26bcfd53d3c84a0a001bc8365bda3279f794af569d235a57241c814223
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
b705ea625fe66cf9b710de3b0b048b285053215fccc8e6ceba581ffba05eb190
|
7b201eac8de5f98d2c3f0e656ea706dfc6d473a4725019b2237bd4195be7634f
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
565a731aa7d620581c49efa1c98e11aab47b6a0d864832f0fac598d05b37c6a1
|
d47d995ae9d6a870d3b9433f945c9b6cd782a4c69f3dea86ba112fc6f23eaffd
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyProductAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
eead11a1c35697f07220b82ac52ad2f4054a2b06624be646cc8f8e7dceec6281
|
a278f4017796d0bef86ddcaf9129657ead4f6b174a40f02c4f4ab4151541afdf
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9b9121897387fa7e2a57d76690a2a9ae848b1705")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyProductAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
266dfc575dfbc47bf568b65a303d0d712ab550e53b7d58f879b06a67eb491c19
|
5cacd6c5da721af1fa92623c1281494f48f6512910f19617f14a84da7edfc68a
|
||||||
|
|||||||
Reference in New Issue
Block a user