热更推进

This commit is contained in:
wuwenbo 2026-06-11 00:34:50 +08:00
parent 8a19e4fe92
commit 0e3cb360ee
177 changed files with 4544 additions and 49764 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,19 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 36527db572638af47b03c805671cba75, type: 3}
m_Name: GlobalConfig
m_EditorClassIdentifier:
CodeMode: 3
EnableDll: 1
BuildType: 1
AppType: 7
EPlayMode: 0

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2
guid: 4e3d91838fd2b974b80e6d441c8857b5
guid: 0ec4cb895ea34797ac934a2fe64d4d49
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,14 @@
{
"name": "CrashSight.Runtime",
"rootNamespace": "",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,8 +1,7 @@
fileFormatVersion: 2
guid: a60778dce43da574aa447ab3fcf5d9f7
NativeFormatImporter:
guid: e881f6f0f4a34fb08bfb4e80b77dcde2
AssemblyDefinitionImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,36 @@
{
"name": "TH1.Editor",
"rootNamespace": "",
"references": [
"TH1.AOT",
"TH1.Hotfix",
"CrashSight.Runtime",
"MemoryPack",
"YooAsset",
"Unity.TextMeshPro",
"UnityEngine.UI",
"UnityEditor.UI",
"Unity.Collections",
"Unity.VisualScripting.Core",
"Unity.VisualScripting.Flow",
"Unity.VisualScripting.State",
"Unity.RenderPipelines.Core.Runtime",
"Unity.RenderPipelines.Universal.Runtime",
"OPS.Obfuscator",
"Animancer",
"ParadoxNotion",
"NodeCanvas",
"com.rlabrecque.steamworks.net"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b4e5597817a3465e9cc5f147d6ad3b21
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.AOT"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 465375cfc7164330b161bfc68eb62555
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,24 +1,554 @@
<?xml version="1.0" encoding="utf-8"?>
<linker>
<assembly fullname="Animancer">
<type fullname="Animancer.AnimancerComponent" preserve="all" />
<type fullname="Animancer.AnimancerEvent" preserve="all" />
<type fullname="Animancer.AnimancerEvent/Sequence" preserve="all" />
<type fullname="Animancer.AnimancerState" preserve="all" />
</assembly>
<assembly fullname="CrashSight.Runtime">
<type fullname="CSLogSeverity" preserve="all" />
<type fullname="CrashSightAgent" preserve="all" />
</assembly>
<assembly fullname="MemoryPack">
<type fullname="MemoryPack.Formatters.ArrayFormatter`1" preserve="all" />
<type fullname="MemoryPack.Formatters.DictionaryFormatter`2" preserve="all" />
<type fullname="MemoryPack.Formatters.HashSetFormatter`1" preserve="all" />
<type fullname="MemoryPack.Formatters.ListFormatter" preserve="all" />
<type fullname="MemoryPack.Formatters.ListFormatter`1" preserve="all" />
<type fullname="MemoryPack.Formatters.UnmanagedFormatter`1" preserve="all" />
<type fullname="MemoryPack.GenerateType" preserve="all" />
<type fullname="MemoryPack.IMemoryPackFormatterRegister" preserve="all" />
<type fullname="MemoryPack.IMemoryPackable`1" preserve="all" />
<type fullname="MemoryPack.Internal.PreserveAttribute" preserve="all" />
<type fullname="MemoryPack.MemoryPackConstructorAttribute" preserve="all" />
<type fullname="MemoryPack.MemoryPackFormatterProvider" preserve="all" />
<type fullname="MemoryPack.MemoryPackFormatter`1" preserve="all" />
<type fullname="MemoryPack.MemoryPackIgnoreAttribute" preserve="all" />
<type fullname="MemoryPack.MemoryPackIncludeAttribute" preserve="all" />
<type fullname="MemoryPack.MemoryPackOnDeserializedAttribute" preserve="all" />
<type fullname="MemoryPack.MemoryPackReader" preserve="all" />
<type fullname="MemoryPack.MemoryPackSerializationException" preserve="all" />
<type fullname="MemoryPack.MemoryPackSerializer" preserve="all" />
<type fullname="MemoryPack.MemoryPackSerializerOptions" preserve="all" />
<type fullname="MemoryPack.MemoryPackUnionAttribute" preserve="all" />
<type fullname="MemoryPack.MemoryPackWriter" preserve="all" />
<type fullname="MemoryPack.MemoryPackableAttribute" preserve="all" />
</assembly>
<assembly fullname="Microsoft.ML.OnnxRuntime">
<type fullname="Microsoft.ML.OnnxRuntime.DisposableNamedOnnxValue" preserve="all" />
<type fullname="Microsoft.ML.OnnxRuntime.IDisposableReadOnlyCollection`1" preserve="all" />
<type fullname="Microsoft.ML.OnnxRuntime.InferenceSession" preserve="all" />
<type fullname="Microsoft.ML.OnnxRuntime.NamedOnnxValue" preserve="all" />
<type fullname="Microsoft.ML.OnnxRuntime.NodeMetadata" preserve="all" />
<type fullname="Microsoft.ML.OnnxRuntime.SessionOptions" preserve="all" />
<type fullname="Microsoft.ML.OnnxRuntime.Tensors.DenseTensor`1" preserve="all" />
<type fullname="Microsoft.ML.OnnxRuntime.Tensors.Tensor`1" preserve="all" />
</assembly>
<assembly fullname="NodeCanvas">
<type fullname="NodeCanvas.BehaviourTrees.BehaviourTreeOwner" preserve="all" />
</assembly>
<assembly fullname="OPS.Obfuscator">
<type fullname="OPS.Obfuscator.Attribute.DoNotObfuscateClassAttribute" preserve="all" />
</assembly>
<assembly fullname="ParadoxNotion">
<type fullname="NodeCanvas.Framework.ActionTask" preserve="all" />
<type fullname="NodeCanvas.Framework.ConditionTask" preserve="all" />
<type fullname="NodeCanvas.Framework.GraphOwner" preserve="all" />
<type fullname="NodeCanvas.Framework.IBlackboard" preserve="all" />
<type fullname="NodeCanvas.Framework.IBlackboardExtensions" preserve="all" />
<type fullname="NodeCanvas.Framework.Task" preserve="all" />
<type fullname="NodeCanvas.Framework.Variable`1" preserve="all" />
<type fullname="ParadoxNotion.Design.CategoryAttribute" preserve="all" />
<type fullname="ParadoxNotion.Design.NameAttribute" preserve="all" />
</assembly>
<assembly fullname="System">
<type fullname="System.CodeDom.Compiler.GeneratedCodeAttribute" preserve="all" />
<type fullname="System.Collections.Generic.LinkedListNode`1" preserve="all" />
<type fullname="System.Collections.Generic.LinkedList`1" preserve="all" />
<type fullname="System.Collections.Generic.LinkedList`1/Enumerator" preserve="all" />
<type fullname="System.Collections.Generic.Queue`1" preserve="all" />
<type fullname="System.Collections.Generic.Queue`1/Enumerator" preserve="all" />
<type fullname="System.Collections.Generic.SortedDictionary`2" preserve="all" />
<type fullname="System.Collections.Generic.Stack`1" preserve="all" />
<type fullname="System.ComponentModel.CategoryAttribute" preserve="all" />
<type fullname="System.ComponentModel.EditorBrowsableAttribute" preserve="all" />
<type fullname="System.ComponentModel.EditorBrowsableState" preserve="all" />
<type fullname="System.Diagnostics.Debug" preserve="all" />
<type fullname="System.Diagnostics.Stopwatch" preserve="all" />
<type fullname="System.IO.Compression.CompressionLevel" preserve="all" />
<type fullname="System.IO.Compression.CompressionMode" preserve="all" />
<type fullname="System.IO.Compression.DeflateStream" preserve="all" />
<type fullname="System.IO.Compression.GZipStream" preserve="all" />
<type fullname="System.IO.InvalidDataException" preserve="all" />
<type fullname="System.Text.RegularExpressions.Capture" preserve="all" />
<type fullname="System.Text.RegularExpressions.Group" preserve="all" />
<type fullname="System.Text.RegularExpressions.GroupCollection" preserve="all" />
<type fullname="System.Text.RegularExpressions.Match" preserve="all" />
<type fullname="System.Text.RegularExpressions.MatchCollection" preserve="all" />
<type fullname="System.Text.RegularExpressions.MatchEvaluator" preserve="all" />
<type fullname="System.Text.RegularExpressions.Regex" preserve="all" />
</assembly>
<assembly fullname="System.Core">
<type fullname="System.Collections.Generic.HashSet`1" preserve="all" />
<type fullname="System.Collections.Generic.HashSet`1/Enumerator" preserve="all" />
<type fullname="System.Linq.Enumerable" preserve="all" />
<type fullname="System.Linq.Expressions.Expression" preserve="all" />
<type fullname="System.Linq.Expressions.Expression`1" preserve="all" />
<type fullname="System.Linq.Expressions.NewExpression" preserve="all" />
<type fullname="System.Linq.Expressions.ParameterExpression" preserve="all" />
<type fullname="System.Linq.IOrderedEnumerable`1" preserve="all" />
</assembly>
<assembly fullname="System.IO.Compression">
<type fullname="System.IO.Compression.ZipArchive" preserve="all" />
<type fullname="System.IO.Compression.ZipArchiveEntry" preserve="all" />
<type fullname="System.IO.Compression.ZipArchiveMode" preserve="all" />
</assembly>
<assembly fullname="System.Numerics">
<type fullname="System.Numerics.Vector2" preserve="all" />
</assembly>
<assembly fullname="System.Runtime.CompilerServices.Unsafe">
<type fullname="System.Runtime.CompilerServices.Unsafe" preserve="all" />
</assembly>
<assembly fullname="System.Xml">
<type fullname="System.Xml.XmlDocument" preserve="all" />
<type fullname="System.Xml.XmlElement" preserve="all" />
<type fullname="System.Xml.XmlNode" preserve="all" />
<type fullname="System.Xml.XmlNodeList" preserve="all" />
</assembly>
<assembly fullname="TH1.AOT">
<type fullname="TH1Resource.ResourceLoader" preserve="all" />
<type fullname="TH1Resource.ResourceManager" preserve="all" />
</assembly>
<assembly fullname="Unity.TextMeshPro">
<type fullname="TMPro.TMP_Dropdown" preserve="all" />
<type fullname="TMPro.TMP_Dropdown/DropdownEvent" preserve="all" />
<type fullname="TMPro.TMP_FontAsset" preserve="all" />
<type fullname="TMPro.TMP_InputField" preserve="all" />
<type fullname="TMPro.TMP_InputField/OnChangeEvent" preserve="all" />
<type fullname="TMPro.TMP_InputField/SubmitEvent" preserve="all" />
<type fullname="TMPro.TMP_Text" preserve="all" />
<type fullname="TMPro.TMP_TextInfo" preserve="all" />
<type fullname="TMPro.TextAlignmentOptions" preserve="all" />
<type fullname="TMPro.TextMeshPro" preserve="all" />
<type fullname="TMPro.TextMeshProUGUI" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.AnimationModule">
<type fullname="UnityEngine.Animation" preserve="all" />
<type fullname="UnityEngine.AnimationClip" preserve="all" />
<type fullname="UnityEngine.AnimationState" preserve="all" />
<type fullname="UnityEngine.Animator" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.AudioModule">
<type fullname="UnityEngine.AudioClip" preserve="all" />
<type fullname="UnityEngine.AudioSource" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.CoreModule">
<type fullname="AOT.MonoPInvokeCallbackAttribute" preserve="all" />
<type fullname="UnityEngine.Application" preserve="all" />
<type fullname="UnityEngine.AsyncOperation" preserve="all" />
<type fullname="UnityEngine.Behaviour" preserve="all" />
<type fullname="UnityEngine.Bounds" preserve="all" />
<type fullname="UnityEngine.Camera" preserve="all" />
<type fullname="UnityEngine.Color" preserve="all" />
<type fullname="UnityEngine.Color32" preserve="all" />
<type fullname="UnityEngine.ColorUsageAttribute" preserve="all" />
<type fullname="UnityEngine.ColorUtility" preserve="all" />
<type fullname="UnityEngine.Component" preserve="all" />
<type fullname="UnityEngine.Coroutine" preserve="all" />
<type fullname="UnityEngine.CreateAssetMenuAttribute" preserve="all" />
<type fullname="UnityEngine.Debug" preserve="all" />
<type fullname="UnityEngine.DisallowMultipleComponent" preserve="all" />
<type fullname="UnityEngine.Events.UnityAction" preserve="all" />
<type fullname="UnityEngine.Events.UnityAction`1" preserve="all" />
<type fullname="UnityEngine.Events.UnityEvent" preserve="all" />
<type fullname="UnityEngine.Events.UnityEventBase" preserve="all" />
<type fullname="UnityEngine.Events.UnityEvent`1" preserve="all" />
<type fullname="UnityEngine.ExecuteAlways" preserve="all" />
<type fullname="UnityEngine.GameObject" preserve="all" />
<type fullname="UnityEngine.Hash128" preserve="all" />
<type fullname="UnityEngine.HeaderAttribute" preserve="all" />
<type fullname="UnityEngine.HideInInspector" preserve="all" />
<type fullname="UnityEngine.ISerializationCallbackReceiver" preserve="all" />
<type fullname="UnityEngine.KeyCode" preserve="all" />
<type fullname="UnityEngine.LayerMask" preserve="all" />
<type fullname="UnityEngine.Light" preserve="all" />
<type fullname="UnityEngine.Material" preserve="all" />
<type fullname="UnityEngine.MaterialPropertyBlock" preserve="all" />
<type fullname="UnityEngine.Mathf" preserve="all" />
<type fullname="UnityEngine.Mesh" preserve="all" />
<type fullname="UnityEngine.MeshFilter" preserve="all" />
<type fullname="UnityEngine.MeshRenderer" preserve="all" />
<type fullname="UnityEngine.MonoBehaviour" preserve="all" />
<type fullname="UnityEngine.Object" preserve="all" />
<type fullname="UnityEngine.PlayerPrefs" preserve="all" />
<type fullname="UnityEngine.PropertyAttribute" preserve="all" />
<type fullname="UnityEngine.Quaternion" preserve="all" />
<type fullname="UnityEngine.Random" preserve="all" />
<type fullname="UnityEngine.RangeAttribute" preserve="all" />
<type fullname="UnityEngine.Ray" preserve="all" />
<type fullname="UnityEngine.Rect" preserve="all" />
<type fullname="UnityEngine.RectOffset" preserve="all" />
<type fullname="UnityEngine.RectTransform" preserve="all" />
<type fullname="UnityEngine.RectTransform/Axis" preserve="all" />
<type fullname="UnityEngine.Renderer" preserve="all" />
<type fullname="UnityEngine.Rendering.LightProbeUsage" preserve="all" />
<type fullname="UnityEngine.Rendering.ShadowCastingMode" preserve="all" />
<type fullname="UnityEngine.RequireComponent" preserve="all" />
<type fullname="UnityEngine.Resources" preserve="all" />
<type fullname="UnityEngine.RuntimeInitializeLoadType" preserve="all" />
<type fullname="UnityEngine.RuntimeInitializeOnLoadMethodAttribute" preserve="all" />
<type fullname="UnityEngine.RuntimePlatform" preserve="all" />
<type fullname="UnityEngine.SceneManagement.Scene" preserve="all" />
<type fullname="UnityEngine.SceneManagement.SceneManager" preserve="all" />
<type fullname="UnityEngine.Screen" preserve="all" />
<type fullname="UnityEngine.ScriptableObject" preserve="all" />
<type fullname="UnityEngine.Serialization.FormerlySerializedAsAttribute" preserve="all" />
<type fullname="UnityEngine.SerializeField" preserve="all" />
<type fullname="UnityEngine.Shader" preserve="all" />
<type fullname="UnityEngine.SkinnedMeshRenderer" preserve="all" />
<type fullname="UnityEngine.Sprite" preserve="all" />
<type fullname="UnityEngine.SpriteRenderer" preserve="all" />
<type fullname="UnityEngine.StaticBatchingUtility" preserve="all" />
<type fullname="UnityEngine.SystemInfo" preserve="all" />
<type fullname="UnityEngine.SystemLanguage" preserve="all" />
<type fullname="UnityEngine.TextAsset" preserve="all" />
<type fullname="UnityEngine.Texture" preserve="all" />
<type fullname="UnityEngine.Texture2D" preserve="all" />
<type fullname="UnityEngine.TextureFormat" preserve="all" />
<type fullname="UnityEngine.Time" preserve="all" />
<type fullname="UnityEngine.TooltipAttribute" preserve="all" />
<type fullname="UnityEngine.Transform" preserve="all" />
<type fullname="UnityEngine.Vector2" preserve="all" />
<type fullname="UnityEngine.Vector2Int" preserve="all" />
<type fullname="UnityEngine.Vector3" preserve="all" />
<type fullname="UnityEngine.Vector4" preserve="all" />
<type fullname="UnityEngine.WaitForEndOfFrame" preserve="all" />
<type fullname="UnityEngine.WaitForSeconds" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.IMGUIModule">
<type fullname="UnityEngine.GUI" preserve="all" />
<type fullname="UnityEngine.GUILayout" preserve="all" />
<type fullname="UnityEngine.GUILayoutOption" preserve="all" />
<type fullname="UnityEngine.GUISkin" preserve="all" />
<type fullname="UnityEngine.GUIStyle" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.InputLegacyModule">
<type fullname="UnityEngine.Input" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.JSONSerializeModule">
<type fullname="UnityEngine.JsonUtility" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.ParticleSystemModule">
<type fullname="UnityEngine.ParticleSystem" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.PhysicsModule">
<type fullname="UnityEngine.Physics" preserve="all" />
<type fullname="UnityEngine.RaycastHit" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.TextRenderingModule">
<type fullname="UnityEngine.UIVertex" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.UI">
<type fullname="UnityEngine.EventSystems.BaseEventData" preserve="all" />
<type fullname="UnityEngine.EventSystems.EventSystem" preserve="all" />
<type fullname="UnityEngine.EventSystems.ExecuteEvents" preserve="all" />
<type fullname="UnityEngine.EventSystems.ExecuteEvents/EventFunction`1" preserve="all" />
<type fullname="UnityEngine.EventSystems.IEndDragHandler" preserve="all" />
<type fullname="UnityEngine.EventSystems.IEventSystemHandler" preserve="all" />
<type fullname="UnityEngine.EventSystems.IPointerClickHandler" preserve="all" />
<type fullname="UnityEngine.EventSystems.IPointerDownHandler" preserve="all" />
<type fullname="UnityEngine.EventSystems.IPointerEnterHandler" preserve="all" />
<type fullname="UnityEngine.EventSystems.IPointerExitHandler" preserve="all" />
<type fullname="UnityEngine.EventSystems.IPointerUpHandler" preserve="all" />
<type fullname="UnityEngine.EventSystems.PointerEventData" preserve="all" />
<type fullname="UnityEngine.EventSystems.PointerEventData/InputButton" preserve="all" />
<type fullname="UnityEngine.UI.Button" preserve="all" />
<type fullname="UnityEngine.UI.Button/ButtonClickedEvent" preserve="all" />
<type fullname="UnityEngine.UI.CanvasScaler" preserve="all" />
<type fullname="UnityEngine.UI.ColorBlock" preserve="all" />
<type fullname="UnityEngine.UI.ContentSizeFitter" preserve="all" />
<type fullname="UnityEngine.UI.ContentSizeFitter/FitMode" preserve="all" />
<type fullname="UnityEngine.UI.Graphic" preserve="all" />
<type fullname="UnityEngine.UI.HorizontalOrVerticalLayoutGroup" preserve="all" />
<type fullname="UnityEngine.UI.Image" preserve="all" />
<type fullname="UnityEngine.UI.Image/Type" preserve="all" />
<type fullname="UnityEngine.UI.InputField" preserve="all" />
<type fullname="UnityEngine.UI.LayoutElement" preserve="all" />
<type fullname="UnityEngine.UI.LayoutGroup" preserve="all" />
<type fullname="UnityEngine.UI.LayoutRebuilder" preserve="all" />
<type fullname="UnityEngine.UI.RawImage" preserve="all" />
<type fullname="UnityEngine.UI.ScrollRect" preserve="all" />
<type fullname="UnityEngine.UI.Selectable" preserve="all" />
<type fullname="UnityEngine.UI.Selectable/Transition" preserve="all" />
<type fullname="UnityEngine.UI.Slider" preserve="all" />
<type fullname="UnityEngine.UI.Slider/SliderEvent" preserve="all" />
<type fullname="UnityEngine.UI.Text" preserve="all" />
<type fullname="UnityEngine.UI.Toggle" preserve="all" />
<type fullname="UnityEngine.UI.Toggle/ToggleEvent" preserve="all" />
<type fullname="UnityEngine.UI.VerticalLayoutGroup" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.UIModule">
<type fullname="UnityEngine.Canvas" preserve="all" />
<type fullname="UnityEngine.CanvasGroup" preserve="all" />
<type fullname="UnityEngine.CanvasRenderer" preserve="all" />
<type fullname="UnityEngine.RectTransformUtility" preserve="all" />
<type fullname="UnityEngine.RenderMode" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.UnityWebRequestModule">
<type fullname="UnityEngine.Networking.DownloadHandler" preserve="all" />
<type fullname="UnityEngine.Networking.DownloadHandlerBuffer" preserve="all" />
<type fullname="UnityEngine.Networking.UnityWebRequest" preserve="all" />
<type fullname="UnityEngine.Networking.UnityWebRequest/Result" preserve="all" />
<type fullname="UnityEngine.Networking.UnityWebRequestAsyncOperation" preserve="all" />
<type fullname="UnityEngine.Networking.UploadHandler" preserve="all" />
<type fullname="UnityEngine.Networking.UploadHandlerRaw" preserve="all" />
</assembly>
<assembly fullname="com.rlabrecque.steamworks.net">
<type fullname="Steamworks.AccountID_t" preserve="all" />
<type fullname="Steamworks.AppId_t" preserve="all" />
<type fullname="Steamworks.CSteamID" preserve="all" />
<type fullname="Steamworks.CallResult`1" preserve="all" />
<type fullname="Steamworks.CallResult`1/APIDispatchDelegate" preserve="all" />
<type fullname="Steamworks.CallbackDispatcher" preserve="all" />
<type fullname="Steamworks.Callback`1" preserve="all" />
<type fullname="Steamworks.Callback`1/DispatchDelegate" preserve="all" />
<type fullname="Steamworks.CreateItemResult_t" preserve="all" />
<type fullname="Steamworks.DllCheck" preserve="all" />
<type fullname="Steamworks.EChatMemberStateChange" preserve="all" />
<type fullname="Steamworks.EChatRoomEnterResponse" preserve="all" />
<type fullname="Steamworks.EFriendFlags" preserve="all" />
<type fullname="Steamworks.EFriendRelationship" preserve="all" />
<type fullname="Steamworks.EItemState" preserve="all" />
<type fullname="Steamworks.EItemUpdateStatus" preserve="all" />
<type fullname="Steamworks.ELobbyComparison" preserve="all" />
<type fullname="Steamworks.ELobbyDistanceFilter" preserve="all" />
<type fullname="Steamworks.ELobbyType" preserve="all" />
<type fullname="Steamworks.EPersonaState" preserve="all" />
<type fullname="Steamworks.ERemoteStoragePublishedFileVisibility" preserve="all" />
<type fullname="Steamworks.EResult" preserve="all" />
<type fullname="Steamworks.ESteamAPIInitResult" preserve="all" />
<type fullname="Steamworks.ESteamNetworkingAvailability" preserve="all" />
<type fullname="Steamworks.ESteamNetworkingConfigDataType" preserve="all" />
<type fullname="Steamworks.ESteamNetworkingConfigValue" preserve="all" />
<type fullname="Steamworks.ESteamNetworkingConnectionState" preserve="all" />
<type fullname="Steamworks.ETextFilteringContext" preserve="all" />
<type fullname="Steamworks.EUGCMatchingUGCType" preserve="all" />
<type fullname="Steamworks.EUGCQuery" preserve="all" />
<type fullname="Steamworks.EUserUGCList" preserve="all" />
<type fullname="Steamworks.EUserUGCListSortOrder" preserve="all" />
<type fullname="Steamworks.EWorkshopFileType" preserve="all" />
<type fullname="Steamworks.GameLobbyJoinRequested_t" preserve="all" />
<type fullname="Steamworks.HAuthTicket" preserve="all" />
<type fullname="Steamworks.HSteamListenSocket" preserve="all" />
<type fullname="Steamworks.HSteamNetConnection" preserve="all" />
<type fullname="Steamworks.LobbyChatUpdate_t" preserve="all" />
<type fullname="Steamworks.LobbyCreated_t" preserve="all" />
<type fullname="Steamworks.LobbyDataUpdate_t" preserve="all" />
<type fullname="Steamworks.LobbyEnter_t" preserve="all" />
<type fullname="Steamworks.LobbyMatchList_t" preserve="all" />
<type fullname="Steamworks.Packsize" preserve="all" />
<type fullname="Steamworks.PublishedFileId_t" preserve="all" />
<type fullname="Steamworks.RemoteStorageSubscribePublishedFileResult_t" preserve="all" />
<type fullname="Steamworks.RemoteStorageUnsubscribePublishedFileResult_t" preserve="all" />
<type fullname="Steamworks.SteamAPI" preserve="all" />
<type fullname="Steamworks.SteamAPICall_t" preserve="all" />
<type fullname="Steamworks.SteamAPIWarningMessageHook_t" preserve="all" />
<type fullname="Steamworks.SteamApps" preserve="all" />
<type fullname="Steamworks.SteamClient" preserve="all" />
<type fullname="Steamworks.SteamFriends" preserve="all" />
<type fullname="Steamworks.SteamMatchmaking" preserve="all" />
<type fullname="Steamworks.SteamNetConnectionInfo_t" preserve="all" />
<type fullname="Steamworks.SteamNetConnectionStatusChangedCallback_t" preserve="all" />
<type fullname="Steamworks.SteamNetworkingConfigValue_t" preserve="all" />
<type fullname="Steamworks.SteamNetworkingConfigValue_t/OptionValue" preserve="all" />
<type fullname="Steamworks.SteamNetworkingIPAddr" preserve="all" />
<type fullname="Steamworks.SteamNetworkingIdentity" preserve="all" />
<type fullname="Steamworks.SteamNetworkingMessage_t" preserve="all" />
<type fullname="Steamworks.SteamNetworkingMessages" preserve="all" />
<type fullname="Steamworks.SteamNetworkingMessagesSessionRequest_t" preserve="all" />
<type fullname="Steamworks.SteamNetworkingSockets" preserve="all" />
<type fullname="Steamworks.SteamNetworkingUtils" preserve="all" />
<type fullname="Steamworks.SteamRelayNetworkStatus_t" preserve="all" />
<type fullname="Steamworks.SteamServerConnectFailure_t" preserve="all" />
<type fullname="Steamworks.SteamServersConnected_t" preserve="all" />
<type fullname="Steamworks.SteamServersDisconnected_t" preserve="all" />
<type fullname="Steamworks.SteamShutdown_t" preserve="all" />
<type fullname="Steamworks.SteamUGC" preserve="all" />
<type fullname="Steamworks.SteamUGCDetails_t" preserve="all" />
<type fullname="Steamworks.SteamUGCQueryCompleted_t" preserve="all" />
<type fullname="Steamworks.SteamUser" preserve="all" />
<type fullname="Steamworks.SteamUtils" preserve="all" />
<type fullname="Steamworks.SubmitItemUpdateResult_t" preserve="all" />
<type fullname="Steamworks.UGCQueryHandle_t" preserve="all" />
<type fullname="Steamworks.UGCUpdateHandle_t" preserve="all" />
</assembly>
<assembly fullname="mscorlib">
<type fullname="System.Action" preserve="all" />
<type fullname="System.Action`1" preserve="all" />
<type fullname="System.Action`2" preserve="all" />
<type fullname="System.Activator" preserve="all" />
<type fullname="System.AppDomain" preserve="all" />
<type fullname="System.ArgumentNullException" preserve="all" />
<type fullname="System.Array" preserve="all" />
<type fullname="System.ArraySegment`1" preserve="all" />
<type fullname="System.AsyncCallback" preserve="all" />
<type fullname="System.Attribute" preserve="all" />
<type fullname="System.AttributeTargets" preserve="all" />
<type fullname="System.AttributeUsageAttribute" preserve="all" />
<type fullname="System.BitConverter" preserve="all" />
<type fullname="System.Boolean" preserve="all" />
<type fullname="System.Buffer" preserve="all" />
<type fullname="System.Buffers.ArrayBufferWriter`1" preserve="all" />
<type fullname="System.Buffers.ArrayPool`1" preserve="all" />
<type fullname="System.Buffers.Binary.BinaryPrimitives" preserve="all" />
<type fullname="System.Buffers.IBufferWriter`1" preserve="all" />
<type fullname="System.Byte" preserve="all" />
<type fullname="System.Char" preserve="all" />
<type fullname="System.Collections.Generic.CollectionExtensions" preserve="all" />
<type fullname="System.Collections.Generic.Dictionary`2" preserve="all" />
<type fullname="System.Collections.Generic.Dictionary`2/Enumerator" preserve="all" />
<type fullname="System.Collections.Generic.Dictionary`2/KeyCollection" preserve="all" />
<type fullname="System.Collections.Generic.Dictionary`2/KeyCollection/Enumerator" preserve="all" />
<type fullname="System.Collections.Generic.Dictionary`2/ValueCollection" preserve="all" />
<type fullname="System.Collections.Generic.Dictionary`2/ValueCollection/Enumerator" preserve="all" />
<type fullname="System.Collections.Generic.EqualityComparer`1" preserve="all" />
<type fullname="System.Collections.Generic.IDictionary`2" preserve="all" />
<type fullname="System.Collections.Generic.IEnumerable`1" preserve="all" />
<type fullname="System.Collections.Generic.IEnumerator`1" preserve="all" />
<type fullname="System.Collections.Generic.IEqualityComparer`1" preserve="all" />
<type fullname="System.Collections.Generic.IList`1" preserve="all" />
<type fullname="System.Collections.Generic.IReadOnlyCollection`1" preserve="all" />
<type fullname="System.Collections.Generic.IReadOnlyDictionary`2" preserve="all" />
<type fullname="System.Collections.Generic.IReadOnlyList`1" preserve="all" />
<type fullname="System.Collections.Generic.KeyValuePair`2" preserve="all" />
<type fullname="System.Collections.Generic.List`1" preserve="all" />
<type fullname="System.Collections.Generic.List`1/Enumerator" preserve="all" />
<type fullname="System.Collections.IDictionary" preserve="all" />
<type fullname="System.Collections.IEnumerable" preserve="all" />
<type fullname="System.Collections.IEnumerator" preserve="all" />
<type fullname="System.Collections.IList" preserve="all" />
<type fullname="System.Comparison`1" preserve="all" />
<type fullname="System.Console" preserve="all" />
<type fullname="System.Convert" preserve="all" />
<type fullname="System.Converter`2" preserve="all" />
<type fullname="System.DateTime" preserve="all" />
<type fullname="System.DateTimeOffset" preserve="all" />
<type fullname="System.Decimal" preserve="all" />
<type fullname="System.Delegate" preserve="all" />
<type fullname="System.Diagnostics.DebuggableAttribute" preserve="all" />
<type fullname="System.Diagnostics.DebuggableAttribute/DebuggingModes" preserve="all" />
<type fullname="System.Diagnostics.DebuggerBrowsableAttribute" preserve="all" />
<type fullname="System.Diagnostics.DebuggerBrowsableState" preserve="all" />
<type fullname="System.Diagnostics.DebuggerHiddenAttribute" preserve="all" />
<type fullname="System.Diagnostics.DebuggerStepThroughAttribute" preserve="all" />
<type fullname="System.DivideByZeroException" preserve="all" />
<type fullname="System.DllNotFoundException" preserve="all" />
<type fullname="System.Double" preserve="all" />
<type fullname="System.EntryPointNotFoundException" preserve="all" />
<type fullname="System.Enum" preserve="all" />
<type fullname="System.Environment" preserve="all" />
<type fullname="System.Exception" preserve="all" />
<type fullname="System.FlagsAttribute" preserve="all" />
<type fullname="System.Func`1" preserve="all" />
<type fullname="System.Func`2" preserve="all" />
<type fullname="System.Func`3" preserve="all" />
<type fullname="System.GC" preserve="all" />
<type fullname="System.Guid" preserve="all" />
<type fullname="System.HashCode" preserve="all" />
<type fullname="System.IAsyncResult" preserve="all" />
<type fullname="System.IDisposable" preserve="all" />
<type fullname="System.IEquatable`1" preserve="all" />
<type fullname="System.IO.Directory" preserve="all" />
<type fullname="System.IO.DirectoryInfo" preserve="all" />
<type fullname="System.IO.EndOfStreamException" preserve="all" />
<type fullname="System.IO.File" preserve="all" />
<type fullname="System.IO.FileAccess" preserve="all" />
<type fullname="System.IO.FileInfo" preserve="all" />
<type fullname="System.IO.FileMode" preserve="all" />
<type fullname="System.IO.FileShare" preserve="all" />
<type fullname="System.IO.FileStream" preserve="all" />
<type fullname="System.IO.FileSystemInfo" preserve="all" />
<type fullname="System.IO.IOException" preserve="all" />
<type fullname="System.IO.MemoryStream" preserve="all" />
<type fullname="System.IO.Path" preserve="all" />
<type fullname="System.IO.SearchOption" preserve="all" />
<type fullname="System.IO.SeekOrigin" preserve="all" />
<type fullname="System.IO.Stream" preserve="all" />
<type fullname="System.Int16" preserve="all" />
<type fullname="System.Int32" preserve="all" />
<type fullname="System.Int64" preserve="all" />
<type fullname="System.IntPtr" preserve="all" />
<type fullname="System.InvalidOperationException" preserve="all" />
<type fullname="System.Math" preserve="all" />
<type fullname="System.MemoryExtensions" preserve="all" />
<type fullname="System.MulticastDelegate" preserve="all" />
<type fullname="System.NotSupportedException" preserve="all" />
<type fullname="System.Nullable`1" preserve="all" />
<type fullname="System.Object" preserve="all" />
<type fullname="System.ParamArrayAttribute" preserve="all" />
<type fullname="System.Predicate`1" preserve="all" />
<type fullname="System.Random" preserve="all" />
<type fullname="System.ReadOnlyMemory`1" preserve="all" />
<type fullname="System.ReadOnlySpan`1" preserve="all" />
<type fullname="System.Reflection.Assembly" preserve="all" />
<type fullname="System.Reflection.Binder" preserve="all" />
<type fullname="System.Reflection.BindingFlags" preserve="all" />
<type fullname="System.Reflection.ConstructorInfo" preserve="all" />
<type fullname="System.Reflection.CustomAttributeExtensions" preserve="all" />
<type fullname="System.Reflection.DefaultMemberAttribute" preserve="all" />
<type fullname="System.Reflection.FieldInfo" preserve="all" />
<type fullname="System.Reflection.MemberInfo" preserve="all" />
<type fullname="System.Reflection.MethodBase" preserve="all" />
<type fullname="System.Reflection.MethodInfo" preserve="all" />
<type fullname="System.Reflection.ParameterModifier" preserve="all" />
<type fullname="System.Reflection.PropertyInfo" preserve="all" />
<type fullname="System.Runtime.CompilerServices.AsyncStateMachineAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.AsyncTaskMethodBuilder" preserve="all" />
<type fullname="System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1" preserve="all" />
<type fullname="System.Runtime.CompilerServices.CompilationRelaxationsAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.CompilerGeneratedAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.ExtensionAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.IAsyncStateMachine" preserve="all" />
<type fullname="System.Runtime.CompilerServices.IsReadOnlyAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.IteratorStateMachineAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.RuntimeCompatibilityAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.RuntimeHelpers" preserve="all" />
<type fullname="System.Runtime.CompilerServices.TaskAwaiter`1" preserve="all" />
<type fullname="System.Runtime.CompilerServices.TupleElementNamesAttribute" preserve="all" />
<type fullname="System.Runtime.CompilerServices.YieldAwaitable" preserve="all" />
<type fullname="System.Runtime.CompilerServices.YieldAwaitable/YieldAwaiter" preserve="all" />
<type fullname="System.Runtime.InteropServices.Marshal" preserve="all" />
<type fullname="System.Runtime.InteropServices.MemoryMarshal" preserve="all" />
<type fullname="System.RuntimeFieldHandle" preserve="all" />
<type fullname="System.RuntimeTypeHandle" preserve="all" />
<type fullname="System.SByte" preserve="all" />
<type fullname="System.Security.Cryptography.HashAlgorithm" preserve="all" />
<type fullname="System.Security.Cryptography.MD5" preserve="all" />
<type fullname="System.Security.Cryptography.MD5CryptoServiceProvider" preserve="all" />
<type fullname="System.Single" preserve="all" />
<type fullname="System.Span`1" preserve="all" />
<type fullname="System.String" preserve="all" />
<type fullname="System.StringComparer" preserve="all" />
<type fullname="System.StringComparison" preserve="all" />
<type fullname="System.StringSplitOptions" preserve="all" />
<type fullname="System.Text.Encoding" preserve="all" />
<type fullname="System.Text.StringBuilder" preserve="all" />
<type fullname="System.Text.UTF8Encoding" preserve="all" />
<type fullname="System.Threading.Interlocked" preserve="all" />
<type fullname="System.Threading.Monitor" preserve="all" />
<type fullname="System.Threading.Tasks.Task" preserve="all" />
<type fullname="System.Threading.Tasks.Task`1" preserve="all" />
<type fullname="System.TimeSpan" preserve="all" />
<type fullname="System.TimeZoneInfo" preserve="all" />
<type fullname="System.Type" preserve="all" />
<type fullname="System.UInt16" preserve="all" />
<type fullname="System.UInt32" preserve="all" />
<type fullname="System.UInt64" preserve="all" />
<type fullname="System.ValueTuple`2" preserve="all" />
<type fullname="System.ValueTuple`3" preserve="all" />
<type fullname="System.ValueTuple`5" preserve="all" />
<type fullname="System.ValueTuple`6" preserve="all" />
<type fullname="System.ValueType" preserve="all" />
</assembly>
</linker>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: afdf198462be42a4a08dbf1b22b49225
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -71,7 +71,15 @@ namespace ParadoxNotion
///----------------------------------------------------------------------------------------------
private static Assembly[] loadedAssemblies {
get { return _loadedAssemblies != null ? _loadedAssemblies : _loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); }
get
{
var currentAssemblies = AppDomain.CurrentDomain.GetAssemblies();
if ( _loadedAssemblies == null || _loadedAssemblies.Length != currentAssemblies.Length ) {
_loadedAssemblies = currentAssemblies;
_allTypes = null;
}
return _loadedAssemblies;
}
}
//Alternative to Type.GetType to work with FullName instead of AssemblyQualifiedName when looking up a type by string
@ -85,7 +93,7 @@ namespace ParadoxNotion
}
Type type = null;
if ( _typesMap.TryGetValue(typeFullName, out type) ) {
if ( _typesMap.TryGetValue(typeFullName, out type) && type != null ) {
return type;
}
@ -119,7 +127,7 @@ namespace ParadoxNotion
}
Logger.LogError(string.Format("Type with name '{0}' could not be resolved.", typeFullName), "Type Request");
return _typesMap[typeFullName] = null;
return null;
}
//direct type look up with it's FullName
@ -1375,4 +1383,4 @@ namespace ParadoxNotion
}
}
}

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8df3842dd57b4dd3a9f8f1344c9a39fc
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5f5d11a733fa4671893a1f2d7bdd83c3
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -104,7 +104,7 @@ NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
@ -117,13 +117,13 @@ NavMeshSettings:
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &251107983
--- !u!1 &598459107
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -131,779 +131,60 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 251107984}
- component: {fileID: 251107987}
- component: {fileID: 251107986}
- component: {fileID: 251107985}
- component: {fileID: 598459108}
- component: {fileID: 598459109}
m_Layer: 0
m_Name: Low
m_Name: TH1Boot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &251107984
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 251107983}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1784017108}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &251107985
--- !u!114 &598459109
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 251107983}
m_GameObject: {fileID: 598459107}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Script: {fileID: 11500000, guid: 4c0a91e9c554c694791fbd5691165798, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &251107986
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 251107983}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &251107987
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 251107983}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 1
m_Camera: {fileID: 1245951406}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!1 &429867060
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 429867063}
- component: {fileID: 429867062}
- component: {fileID: 429867061}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &429867061
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 429867060}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &429867062
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 429867060}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 5
--- !u!4 &429867063
GameSceneLocation: Scenes/SampleScene.unity
LoadGameSceneFromYooAsset: 1
NoAI: 0
FullSight: 0
AIActionTime: 0.5
AIAllTech: 0
AIMoreMoney: 0
LandThreshold: -1
AnimationSpeed: 1
DebugMode: 0
DebugHideCenterMessage: 0
cityCount: 30
unitCount: 0
turn: 0
renko: 0
IsNetActionExecuting: 0
ROMapRenderer: {fileID: 0}
URPDefaultMat: {fileID: 0}
--- !u!4 &598459108
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 429867060}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 575235020}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &493985069
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 493985070}
- component: {fileID: 493985073}
- component: {fileID: 493985072}
- component: {fileID: 493985071}
m_Layer: 0
m_Name: Mid
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &493985070
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 493985069}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1784017108}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &493985071
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 493985069}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &493985072
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 493985069}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &493985073
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 493985069}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 1
m_Camera: {fileID: 1245951406}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 10
m_TargetDisplay: 0
--- !u!1 &575235018
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 575235020}
- component: {fileID: 575235022}
- component: {fileID: 575235023}
m_Layer: 0
m_Name: Global
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &575235020
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 575235018}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 429867063}
- {fileID: 1984349697}
- {fileID: 1245951402}
- {fileID: 1784017108}
- {fileID: 630054496}
- {fileID: 590194895}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &575235022
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 575235018}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
m_Name:
m_EditorClassIdentifier:
data:
- key: Unit
gameObject: {fileID: 1610378981859644, guid: cfaf4529ce2243c4c85126e9d008897b,
type: 3}
--- !u!114 &575235023
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 575235018}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3b3cb9b07d7917f4cbf5bc2be18e8585, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &590194894
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 590194895}
m_Layer: 0
m_Name: Scenes
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &590194895
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 590194894}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 575235020}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &630054495
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 630054496}
m_Layer: 0
m_Name: Unit
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &630054496
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 630054495}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 575235020}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &872594939
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 872594940}
- component: {fileID: 872594943}
- component: {fileID: 872594942}
- component: {fileID: 872594941}
m_Layer: 0
m_Name: Hidden
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &872594940
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 872594939}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1784017108}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &872594941
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 872594939}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &872594942
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 872594939}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &872594943
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 872594939}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 1
m_Camera: {fileID: 1245951406}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!1 &1245951401
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1245951402}
- component: {fileID: 1245951406}
- component: {fileID: 1245951405}
- component: {fileID: 1245951403}
- component: {fileID: 1245951404}
m_Layer: 0
m_Name: UICamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1245951402
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245951401}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 575235020}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!81 &1245951403
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245951401}
m_Enabled: 0
--- !u!114 &1245951404
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245951401}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 1
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
--- !u!124 &1245951405
Behaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245951401}
m_Enabled: 1
--- !u!20 &1245951406
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1245951401}
m_Enabled: 1
m_GameObject: {fileID: 598459107}
serializedVersion: 2
m_ClearFlags: 3
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 32
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_AllowMSAA: 0
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1 &1439952248
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1439952249}
- component: {fileID: 1439952252}
- component: {fileID: 1439952251}
- component: {fileID: 1439952250}
m_Layer: 0
m_Name: High
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1439952249
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1439952248}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1784017108}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &1439952250
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1439952248}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &1439952251
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1439952248}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!223 &1439952252
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1439952248}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 1
m_Camera: {fileID: 1245951406}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 20
m_TargetDisplay: 0
--- !u!1 &1784017107
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1784017108}
- component: {fileID: 1784017109}
m_Layer: 0
m_Name: UI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1784017108
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1784017107}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 4.5230885, y: 50.832413, z: 1.7386185}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 872594940}
- {fileID: 251107984}
- {fileID: 493985070}
- {fileID: 1439952249}
m_Father: {fileID: 575235020}
m_RootOrder: 3
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1784017109
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1784017107}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 502d8cafd6a5a0447ab1db9a24cdcb10, type: 3}
m_Name:
m_EditorClassIdentifier:
data:
- key: Hidden
gameObject: {fileID: 872594939}
- key: Low
gameObject: {fileID: 251107983}
- key: Mid
gameObject: {fileID: 493985069}
- key: High
gameObject: {fileID: 1439952248}
--- !u!850595691 &1972482029
LightingSettings:
m_ObjectHideFlags: 0
@ -911,7 +192,7 @@ LightingSettings:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Settings.lighting
serializedVersion: 4
serializedVersion: 6
m_GIWorkflowMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
@ -920,7 +201,7 @@ LightingSettings:
m_AlbedoBoost: 1
m_IndirectOutputScale: 1
m_UsingShadowmask: 0
m_BakeBackend: 0
m_BakeBackend: 1
m_LightmapMaxSize: 1024
m_BakeResolution: 40
m_Padding: 2
@ -945,13 +226,13 @@ LightingSettings:
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVREnvironmentSampleCount: 500
m_PVRSampleCount: 512
m_PVREnvironmentSampleCount: 512
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRMinBounces: 2
m_PVREnvironmentMIS: 0
m_PVREnvironmentImportanceSampling: 0
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
@ -966,122 +247,10 @@ LightingSettings:
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_PVRTiledBaking: 0
--- !u!1 &1984349696
GameObject:
m_NumRaysToShootPerTexel: -1
m_RespectSceneVisibilityWhenBakingGI: 0
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1984349697}
- component: {fileID: 1984349700}
- component: {fileID: 1984349699}
- component: {fileID: 1984349698}
m_Layer: 0
m_Name: MainCamera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1984349697
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1984349696}
m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254}
m_LocalPosition: {x: 2.1579952, y: 35.460117, z: -32.150215}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 575235020}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0}
--- !u!114 &1984349698
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1984349696}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras:
- {fileID: 1245951406}
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
--- !u!81 &1984349699
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1984349696}
m_Enabled: 1
--- !u!20 &1984349700
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1984349696}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 279
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_Roots:
- {fileID: 598459108}

View File

@ -10,7 +10,6 @@ using System;
using System.Collections.Generic;
using Logic.AI;
using NodeCanvas.Framework;
using NUnit.Framework;
using ParadoxNotion.Design;
using RuntimeData;

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e5796c12a6054444b1c157a18f479d40
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: de1896b82d5f45d3add5b61542a94179
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 65948080d0d44455b3c29c0f5aa5de1c
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2
guid: 76014dabbf7df4d4b98dc8cbbae75ead
guid: b2c1e0a1d6ab4efbb0d4b25c0e3d9a10
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,42 @@
using TH1_Logic.Hotfix;
using UnityEngine;
namespace TH1_AOT
{
public static class AotHotfixPreloader
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]
private static void LoadHotfixAfterAssembliesLoaded()
{
TryPreload("after assemblies loaded", false);
}
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void LoadHotfixBeforeScene()
{
TryPreload("before first scene", true);
}
private static void TryPreload(string phase, bool warnIfUnavailable)
{
#if UNITY_EDITOR
HotfixBootstrap.RefreshRuntimeTypeCaches();
#else
if (HotfixBootstrap.IsLoaded)
{
HotfixBootstrap.RefreshRuntimeTypeCaches();
return;
}
if (HotfixBootstrap.InitializeFromStreamingAssets(false, false))
{
Debug.Log($"[TH1.AOT] Hotfix preloaded {phase}.");
}
else if (warnIfUnavailable)
{
Debug.LogWarning("[TH1.AOT] Hotfix preload did not finish before scene load; bootstrap will retry from the scene entry.");
}
#endif
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8f2e265894874e5da1f0c7297bdb321d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,256 @@
using System;
using System.Collections;
using System.Linq;
using System.Reflection;
using TH1_Logic.Hotfix;
using TH1Resource;
using UnityEngine;
using UnityEngine.SceneManagement;
using YooAsset;
namespace TH1_AOT
{
[DisallowMultipleComponent]
public sealed class AotMainBootstrap : MonoBehaviour
{
private const string GameSceneAssetRoot = "Assets/BundleResources/";
[Header("Game Scene")]
public string GameSceneLocation = "Scenes/SampleScene.unity";
public bool LoadGameSceneFromYooAsset = true;
[Header("Debug Param")]
public bool NoAI = false;
public bool FullSight = true;
public float AIActionTime = 0.2f;
public bool AIAllTech = true;
public bool AIMoreMoney = true;
public float LandThreshold = -1f;
public float AnimationSpeed = 1f;
public bool DebugMode = false;
public bool DebugHideCenterMessage = false;
[Header("Play Settings")]
public int cityCount;
public int unitCount;
public int turn;
public int renko;
public bool IsNetActionExecuting;
[Header("RenderObject")]
public GameObject ROMapRenderer;
[Header("SuperBank")]
public Material URPDefaultMat;
private bool _started;
private static bool _runtimeStarted;
private static SceneHandle _gameSceneHandle;
private static readonly string[] ForwardedFieldNames =
{
nameof(GameSceneLocation),
nameof(LoadGameSceneFromYooAsset),
nameof(NoAI),
nameof(FullSight),
nameof(AIActionTime),
nameof(AIAllTech),
nameof(AIMoreMoney),
nameof(LandThreshold),
nameof(AnimationSpeed),
nameof(DebugMode),
nameof(DebugHideCenterMessage),
nameof(cityCount),
nameof(unitCount),
nameof(turn),
nameof(renko),
nameof(IsNetActionExecuting),
nameof(ROMapRenderer),
nameof(URPDefaultMat),
};
private IEnumerator Start()
{
if (_started) yield break;
_started = true;
if (_runtimeStarted)
{
yield break;
}
_runtimeStarted = true;
Application.runInBackground = true;
DontDestroyOnLoad(gameObject);
Debug.Log("[TH1.AOT] Bootstrap start.");
var hotfixAssembly = ResolveHotfixAssembly();
if (hotfixAssembly == null)
{
Debug.LogError("[TH1.AOT] Hotfix assembly is not available.");
yield break;
}
HotfixBootstrap.EnsureAotMetadataLoaded();
HotfixBootstrap.InvokeHotfixEntry(hotfixAssembly);
HotfixBootstrap.RefreshRuntimeTypeCaches();
Debug.Log($"[TH1.AOT] Hotfix assembly ready: {hotfixAssembly.GetName().Name}");
yield return ResourceManager.InitializeCoroutine();
var sceneBootstrap = this;
if (LoadGameSceneFromYooAsset && !IsGameSceneLoaded(GameSceneLocation))
{
var sceneHandle = ResourceManager.LoadSceneAsync(GameSceneLocation, LoadSceneMode.Single);
yield return sceneHandle;
if (sceneHandle.Status != EOperationStatus.Succeed)
{
Debug.LogError($"[TH1.AOT] Load game scene failed: {GameSceneLocation}, {sceneHandle.LastError}");
_runtimeStarted = false;
yield break;
}
_gameSceneHandle = sceneHandle;
sceneHandle.ActivateScene();
sceneBootstrap = FindBootstrapInScene(sceneHandle.SceneObject) ?? this;
if (sceneBootstrap != this)
{
sceneBootstrap.enabled = false;
}
Debug.Log($"[TH1.AOT] Loaded game scene from YooAsset: {GameSceneLocation}");
}
var hotfixMainType = hotfixAssembly.GetType(HotfixManifest.RuntimeMainTypeName, false);
if (hotfixMainType == null)
{
Debug.LogError($"[TH1.AOT] Hotfix Main type not found: {HotfixManifest.RuntimeMainTypeName}");
yield break;
}
if (!typeof(MonoBehaviour).IsAssignableFrom(hotfixMainType))
{
Debug.LogError($"[TH1.AOT] Hotfix Main type is not a MonoBehaviour: {hotfixMainType.FullName}");
yield break;
}
var mainHost = sceneBootstrap != null ? sceneBootstrap.gameObject : gameObject;
var hotfixMain = mainHost.GetComponent(hotfixMainType);
if (hotfixMain == null)
{
hotfixMain = mainHost.AddComponent(hotfixMainType);
}
ForwardSceneFields(sceneBootstrap, hotfixMain);
Debug.Log($"[TH1.AOT] Started hotfix Main from {hotfixAssembly.GetName().Name}.");
}
private static Assembly ResolveHotfixAssembly()
{
#if UNITY_EDITOR
var editorAssembly = FindLoadedAssembly(HotfixManifest.HotfixAssemblyName);
if (editorAssembly != null)
{
return editorAssembly;
}
#endif
if (HotfixBootstrap.LoadedAssembly != null)
{
return HotfixBootstrap.LoadedAssembly;
}
if (HotfixBootstrap.InitializeFromStreamingAssets(true))
{
return HotfixBootstrap.LoadedAssembly;
}
return FindLoadedAssembly(HotfixManifest.HotfixAssemblyName);
}
private static Assembly FindLoadedAssembly(string assemblyName)
{
return AppDomain.CurrentDomain.GetAssemblies()
.FirstOrDefault(assembly => assembly.GetName().Name == assemblyName);
}
private bool IsGameSceneLoaded(string location)
{
var expectedPath = NormalizeGameSceneAssetPath(location);
for (var i = 0; i < SceneManager.sceneCount; i++)
{
var scene = SceneManager.GetSceneAt(i);
if (!scene.isLoaded) continue;
var scenePath = scene.path.Replace('\\', '/');
if (scenePath.Equals(expectedPath, StringComparison.OrdinalIgnoreCase))
{
return true;
}
}
return false;
}
private static string NormalizeGameSceneAssetPath(string location)
{
if (string.IsNullOrWhiteSpace(location))
{
return string.Empty;
}
var normalized = location.Replace('\\', '/').TrimStart('/');
return normalized.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase)
? normalized
: GameSceneAssetRoot + normalized;
}
private AotMainBootstrap FindBootstrapInScene(Scene scene)
{
if (scene.IsValid() && scene.isLoaded)
{
foreach (var root in scene.GetRootGameObjects())
{
var bootstrap = root.GetComponentsInChildren<AotMainBootstrap>(true)
.FirstOrDefault(item => item != null && item != this);
if (bootstrap != null)
{
return bootstrap;
}
}
}
return FindObjectsOfType<AotMainBootstrap>(true)
.FirstOrDefault(item => item != null && item != this);
}
private static void ForwardSceneFields(AotMainBootstrap source, Component hotfixMain)
{
if (source == null || hotfixMain == null) return;
var sourceType = source.GetType();
var targetType = hotfixMain.GetType();
const BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
foreach (var fieldName in ForwardedFieldNames)
{
var sourceField = sourceType.GetField(fieldName, flags);
var targetField = targetType.GetField(fieldName, flags);
if (sourceField == null || targetField == null) continue;
try
{
targetField.SetValue(hotfixMain, sourceField.GetValue(source));
}
catch (Exception e)
{
Debug.LogWarning($"[TH1.AOT] Forward field failed: {fieldName}, {e.Message}");
}
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4c0a91e9c554c694791fbd5691165798
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
@ -9,25 +10,22 @@ namespace TH1_Logic.Hotfix
public static class HotfixBootstrap
{
private static bool _initialized;
private static bool _aotMetadataLoaded;
private static readonly HashSet<string> InvokedEntryAssemblies = new HashSet<string>();
public static bool IsLoaded { get; private set; }
public static Assembly LoadedAssembly { get; private set; }
public static string LoadedAssemblyFullName { get; private set; }
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void AutoInitialize()
public static bool InitializeFromStreamingAssets(bool requireHotfix, bool invokeEntry = true)
{
InitializeFromStreamingAssets(false);
}
public static bool InitializeFromStreamingAssets(bool requireHotfix)
{
if (_initialized) return IsLoaded;
try
{
var root = Path.Combine(Application.streamingAssetsPath, HotfixManifest.RootFolderName);
LoadAotMetadata(root);
if (_initialized) return IsLoaded;
var hotfixPath = Path.Combine(root, HotfixManifest.HotfixDllFolderName, HotfixManifest.HotfixAssemblyFileName);
if (!File.Exists(hotfixPath))
{
@ -40,8 +38,14 @@ namespace TH1_Logic.Hotfix
}
var assembly = Assembly.Load(File.ReadAllBytes(hotfixPath));
LoadedAssembly = assembly;
LoadedAssemblyFullName = assembly.FullName;
InvokeHotfixEntry(assembly);
RefreshRuntimeTypeCaches();
if (invokeEntry)
{
InvokeHotfixEntry(assembly);
}
_initialized = true;
IsLoaded = true;
Debug.Log($"[TH1.Hotfix] Loaded {LoadedAssemblyFullName}");
@ -54,8 +58,33 @@ namespace TH1_Logic.Hotfix
}
}
public static void EnsureAotMetadataLoaded()
{
try
{
var root = Path.Combine(Application.streamingAssetsPath, HotfixManifest.RootFolderName);
LoadAotMetadata(root);
}
catch (Exception e)
{
Debug.LogWarning($"[TH1.Hotfix] Ensure AOT metadata failed: {e.Message}");
}
}
public static void InvokeHotfixEntry(Assembly assembly)
{
if (assembly == null) return;
var assemblyKey = assembly.FullName ?? assembly.GetName().Name;
if (!InvokedEntryAssemblies.Add(assemblyKey)) return;
InvokeHotfixEntryInternal(assembly);
}
private static void LoadAotMetadata(string root)
{
if (_aotMetadataLoaded) return;
var runtimeApiType = FindType("HybridCLR.RuntimeApi");
var modeType = FindType("HybridCLR.HomologousImageMode");
if (runtimeApiType == null || modeType == null)
@ -77,18 +106,26 @@ namespace TH1_Logic.Hotfix
var mode = Enum.Parse(modeType, "SuperSet");
var aotDir = Path.Combine(root, HotfixManifest.AotMetadataFolderName);
var allLoaded = true;
foreach (var fileName in HotfixManifest.AotMetadataAssemblyFileNames)
{
var path = Path.Combine(aotDir, fileName);
if (!File.Exists(path)) continue;
if (!File.Exists(path))
{
allLoaded = false;
Debug.LogWarning($"[TH1.Hotfix] AOT metadata missing: {path}");
continue;
}
var result = method.Invoke(null, new object[] { File.ReadAllBytes(path), mode });
Debug.Log($"[TH1.Hotfix] Load AOT metadata {fileName}: {result}");
}
_aotMetadataLoaded = allLoaded;
}
private static void InvokeHotfixEntry(Assembly assembly)
private static void InvokeHotfixEntryInternal(Assembly assembly)
{
var entryType = assembly.GetType(HotfixManifest.EntryTypeName);
if (entryType == null)
@ -113,5 +150,18 @@ namespace TH1_Logic.Hotfix
.Select(assembly => assembly.GetType(fullName, false))
.FirstOrDefault(type => type != null);
}
public static void RefreshRuntimeTypeCaches()
{
InvokeStaticNoArg("ParadoxNotion.ReflectionTools", "FlushMem");
InvokeStaticNoArg("ParadoxNotion.Serialization.JSONSerializer", "FlushMem");
}
private static void InvokeStaticNoArg(string typeName, string methodName)
{
var type = FindType(typeName);
var method = type?.GetMethod(methodName, BindingFlags.Public | BindingFlags.Static);
method?.Invoke(null, null);
}
}
}

View File

@ -14,12 +14,15 @@ namespace TH1_Logic.Hotfix
public const string HotfixAssemblyFileName = HotfixAssemblyName + ".dll.bytes";
public const string EntryTypeName = "TH1_Hotfix.HotfixEntry";
public const string EntryMethodName = "Initialize";
public const string RuntimeMainTypeName = "TH1_Logic.Core.Main";
public static readonly string[] AotMetadataAssemblyFileNames =
{
"mscorlib.dll.bytes",
"System.dll.bytes",
"System.Core.dll.bytes",
"MemoryPack.dll.bytes",
"System.Runtime.CompilerServices.Unsafe.dll.bytes",
};
}
}

View File

@ -1,5 +1,6 @@
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using YooAsset;
namespace TH1Resource
@ -15,6 +16,17 @@ namespace TH1Resource
public static bool IsInitialized => _initialized;
public static ResourcePackage Package => _package;
public static SceneHandle LoadSceneAsync(string location, LoadSceneMode sceneMode)
{
if (!_initialized)
{
Debug.LogError($"[TH1.YooAsset] Resource package is not initialized. scene={location}");
return null;
}
return _package.LoadSceneAsync(location, sceneMode);
}
public static IEnumerator InitializeCoroutine()
{
if (_initialized) yield break;

View File

@ -0,0 +1,17 @@
{
"name": "TH1.AOT",
"rootNamespace": "",
"references": [
"YooAsset",
"HybridCLR.Runtime"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ab4e4de0ed124cf0aee8db4071c92f10
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b70422ed892f4b189769782820281a14
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 964fa597a4614fff93a17eaf44a996f2
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 30639365a9894917af7045b45f08a64c
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3efba60740ce4bb4bf3219655dd4f31a
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -13,7 +13,6 @@ using Logic.AI;
using Logic.Audio;
using Logic.Pool;
using MemoryPack;
using NUnit.Framework;
using TH1_Core.Events;
using TH1_Core.Managers;
using TH1_Logic.Core;

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5bcd83c5b2774365af55ea2b2d94cb92
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 00e597564a5842bb8c2ede1f7db2187d
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cc07a967c6a04f89a516b84fd378845d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,25 @@
{
"name": "TH1.Hotfix",
"rootNamespace": "TH1_Hotfix",
"references": [],
"rootNamespace": "",
"references": [
"TH1.AOT",
"CrashSight.Runtime",
"MemoryPack",
"YooAsset",
"Unity.TextMeshPro",
"UnityEngine.UI",
"Unity.Collections",
"Unity.VisualScripting.Core",
"Unity.VisualScripting.Flow",
"Unity.VisualScripting.State",
"Unity.RenderPipelines.Core.Runtime",
"Unity.RenderPipelines.Universal.Runtime",
"OPS.Obfuscator",
"Animancer",
"ParadoxNotion",
"NodeCanvas",
"com.rlabrecque.steamworks.net"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6e400a8e09604d5fa428f785359291f7
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,16 +1,11 @@
using System;
using System;
using System.Collections.Generic;
using Logic.Achievement;
using Logic.Action;
using NUnit.Framework.Constraints;
using NUnit.Framework.Internal.Commands;
using UnityEngine;
using RuntimeData;
using TH1_DataAssetsScript;
using TH1_Logic.MatchConfig;
using UnityEditor;
public enum TerrainType { None,Land, ShallowSea, DeepSea } // 海陆层
public enum TerrainFeature { None, Mountain,Road } // 地形层
public enum Vegetation { None, Trees } // 植被层

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 34d97537cb1541f8ae27d255c5d3ecbc
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d2ae4cde6abf41d5afd19d21acf5b44f
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -191,7 +191,7 @@ namespace Logic.Achievement
_jsonData.Clear();
foreach (var skill in Conditions)
{
_typeNames.Add(skill.GetType().AssemblyQualifiedName);
_typeNames.Add(skill.GetType().AssemblyQualifiedName ?? skill.GetType().FullName);
_jsonData.Add(JsonUtility.ToJson(skill));
}
}
@ -200,12 +200,60 @@ namespace Logic.Achievement
{
Conditions ??= new List<AchievementConditionBase>();
Conditions.Clear();
for (int i = 0; i < _typeNames.Count; i++)
if (_typeNames == null || _jsonData == null) return;
int count = Mathf.Min(_typeNames.Count, _jsonData.Count);
if (_typeNames.Count != _jsonData.Count)
{
var type = Type.GetType(_typeNames[i]);
var condition = (AchievementConditionBase) JsonUtility.FromJson(_jsonData[i], type);
Debug.LogWarning($"[Achievement] Condition serialize data mismatch: typeCount={_typeNames.Count}, jsonCount={_jsonData.Count}");
}
for (int i = 0; i < count; i++)
{
var type = ResolveConditionType(_typeNames[i]);
if (type == null)
{
Debug.LogWarning($"[Achievement] Condition type not found: {_typeNames[i]}");
continue;
}
var condition = JsonUtility.FromJson(_jsonData[i], type) as AchievementConditionBase;
if (condition == null)
{
Debug.LogWarning($"[Achievement] Condition deserialize failed: {_typeNames[i]}");
continue;
}
Conditions.Add(condition);
}
}
private static Type ResolveConditionType(string typeName)
{
if (string.IsNullOrEmpty(typeName)) return null;
var type = Type.GetType(typeName);
if (IsConditionType(type)) return type;
var commaIndex = typeName.IndexOf(',');
var fullName = commaIndex >= 0 ? typeName.Substring(0, commaIndex).Trim() : typeName.Trim();
if (string.IsNullOrEmpty(fullName)) return null;
type = typeof(AchievementConditionBase).Assembly.GetType(fullName);
if (IsConditionType(type)) return type;
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
type = assembly.GetType(fullName);
if (IsConditionType(type)) return type;
}
return null;
}
private static bool IsConditionType(Type type)
{
return type != null && typeof(AchievementConditionBase).IsAssignableFrom(type);
}
}
}
}

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3f308aaecbee4cbaad35b6855ec73b22
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 72829ea0c1ae4bb491319cb79c4f2341
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -18,10 +18,6 @@ using TH1_Logic.Core;
using UnityEngine;
using TH1Renderer;
using TH1Resource;
using UnityEditor;
using UnityEngineInternal;
//这里是所有BuildAction派生子类的实现模块
namespace Logic.Action
{

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 61750128795646a2959ca1fba7285ba2
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d42ec8f556a04c1f8a9d1eec99cfa248
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ba0f4b5e19fe4b3492515ceb2237c0b8
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a8d86463838b4ec2a8fb8a48cc8f16d8
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ab413b584032463da16c10b4715b6107
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3d6fdc205d074a949c20cfa4adde8140
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -36,6 +36,7 @@ using ConfigManager = TH1_Logic.Config.ConfigManager;
namespace TH1_Logic.Core
{
// Runtime entry loaded by the AOT bootstrap after TH1.Hotfix is available.
public class Main : MonoBehaviour
{
public static Main Instance { get; private set; }

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4c0a91e9c554c694791fbd5691165798
guid: 15954ca405a64a7686069330ae6a5ead
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5c3af3e4457e4bf28cef75c98421e01f
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 833b8b95716946b5b40dfd9095cebc25
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
{
"reference": "TH1.Hotfix"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a4fd02479fb64b53818bff9c317f67b5
AssemblyDefinitionReferenceImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +1,4 @@
/*
/*
* @Author:
* @Description:
* @Date: 20250422 15:04:14
@ -10,7 +10,6 @@ using System.Collections.Generic;
using System.IO;
using Logic.Achievement;
using Logic.Multilingual;
using NUnit.Framework;
using RuntimeData;
using UnityEditor;
using UnityEngine;

View File

@ -1,4 +1,4 @@
/*
/*
* @Author:
* @Description:
* @Date: 20250422 15:04:14
@ -11,7 +11,6 @@ using System.IO;
using Logic.Achievement;
using Logic.HeroTask;
using Logic.Multilingual;
using NUnit.Framework;
using RuntimeData;
using TH1_Logic.HeroTask;
using UnityEditor;

View File

@ -12,7 +12,7 @@ namespace TH1_Logic.Editor.HybridCLR
{
private const string HybridClrInstallerMenu = "HybridCLR/Installer...";
private const string HybridClrGenerateAllMenu = "HybridCLR/Generate/All";
private const string HybridClrCompileDllMenu = "HybridCLR/CompileDll/ActiveBuildTarget";
public const long MinimumHotfixDllSize = 64 * 1024;
[MenuItem("Tools/TH1/iOS Migration/HybridCLR/1. Run HybridCLR Installer")]
public static void RunHybridClrInstaller()
@ -42,6 +42,8 @@ namespace TH1_Logic.Editor.HybridCLR
AddStringToArrayField(settingsType, instance, "patchAOTAssemblies", "mscorlib");
AddStringToArrayField(settingsType, instance, "patchAOTAssemblies", "System");
AddStringToArrayField(settingsType, instance, "patchAOTAssemblies", "System.Core");
AddStringToArrayField(settingsType, instance, "patchAOTAssemblies", "MemoryPack");
AddStringToArrayField(settingsType, instance, "patchAOTAssemblies", "System.Runtime.CompilerServices.Unsafe");
settingsType.GetMethod("Save", BindingFlags.Public | BindingFlags.Static)?.Invoke(null, null);
Debug.Log("[TH1.HybridCLR] Configured HybridCLRSettings for TH1.Hotfix.");
@ -50,24 +52,36 @@ namespace TH1_Logic.Editor.HybridCLR
[MenuItem("Tools/TH1/iOS Migration/HybridCLR/3. Generate All")]
public static void GenerateAll()
{
ExecuteHybridClrMenu(HybridClrGenerateAllMenu);
using (TH1MigrationBuildValidationGate.Suppress())
{
ExecuteHybridClrMenu(HybridClrGenerateAllMenu);
}
}
[MenuItem("Tools/TH1/iOS Migration/HybridCLR/4. Compile Hotfix Dll")]
public static void CompileHotfixDll()
{
if (!ExecuteHybridClrMenu(HybridClrCompileDllMenu))
{
Debug.LogWarning("[TH1.HybridCLR] Compile menu was not found. Run HybridCLR/Generate/All or use the package CompileDll menu manually.");
}
TryCompileHotfixDll(EditorUserBuildSettings.development);
}
[MenuItem("Tools/TH1/iOS Migration/HybridCLR/5. Copy Hotfix Artifacts To StreamingAssets")]
public static void CopyHotfixArtifactsToStreamingAssets()
{
CopyHotfixDll();
BuildAndCopyHotfixArtifacts(EditorUserBuildSettings.development);
}
public static bool BuildAndCopyHotfixArtifacts(bool developmentBuild)
{
if (!TryCompileHotfixDll(developmentBuild))
{
Debug.LogError("[TH1.HybridCLR] Compile hotfix dll failed. Skip copying hotfix artifacts.");
return false;
}
var copiedHotfixDll = CopyHotfixDll();
CopyAotMetadataDlls();
AssetDatabase.Refresh();
return copiedHotfixDll;
}
[MenuItem("Tools/TH1/iOS Migration/HybridCLR/6. Test Load StreamingAssets Hotfix In Editor")]
@ -77,29 +91,67 @@ namespace TH1_Logic.Editor.HybridCLR
Debug.Log($"[TH1.HybridCLR] Test load result: {loaded}, assembly: {HotfixBootstrap.LoadedAssemblyFullName}");
}
private static void CopyHotfixDll()
public static string GetHotfixDllSourcePath(BuildTarget buildTarget)
{
var buildTarget = EditorUserBuildSettings.activeBuildTarget.ToString();
var source = Path.Combine("HybridCLRData", "HotUpdateDlls", buildTarget, HotfixManifest.HotfixAssemblyName + ".dll");
if (!File.Exists(source))
{
source = Path.Combine("Library", "ScriptAssemblies", HotfixManifest.HotfixAssemblyName + ".dll");
}
return Path.Combine("HybridCLRData", "HotUpdateDlls", buildTarget.ToString(), HotfixManifest.HotfixAssemblyName + ".dll");
}
var destination = Path.Combine(
public static string GetStreamingHotfixDllPath()
{
return Path.Combine(
Application.streamingAssetsPath,
HotfixManifest.RootFolderName,
HotfixManifest.HotfixDllFolderName,
HotfixManifest.HotfixAssemblyFileName);
}
CopyFile(source, destination, "hotfix dll");
public static string GetAotMetadataSourceDir(BuildTarget buildTarget)
{
return Path.Combine("HybridCLRData", "AssembliesPostIl2CppStrip", buildTarget.ToString());
}
public static string GetStreamingAotMetadataDir()
{
return Path.Combine(Application.streamingAssetsPath, HotfixManifest.RootFolderName, HotfixManifest.AotMetadataFolderName);
}
public static bool IsUsableHotfixDll(string path, out string message)
{
if (!File.Exists(path))
{
message = $"缺失: {path}";
return false;
}
var file = new FileInfo(path);
if (file.Length < MinimumHotfixDllSize)
{
message = $"文件过小,通常表示还是旧的空壳 DLL{FormatBytes(file.Length)}: {path}";
return false;
}
message = $"OK{FormatBytes(file.Length)}{file.LastWriteTime:yyyy-MM-dd HH:mm:ss}";
return true;
}
private static bool CopyHotfixDll()
{
var source = GetHotfixDllSourcePath(EditorUserBuildSettings.activeBuildTarget);
if (File.Exists(source) && new FileInfo(source).Length < MinimumHotfixDllSize)
{
Debug.LogError($"[TH1.HybridCLR] hotfix dll is too small and looks stale: {source}");
return false;
}
var destination = GetStreamingHotfixDllPath();
return CopyFile(source, destination, "hotfix dll");
}
private static void CopyAotMetadataDlls()
{
var buildTarget = EditorUserBuildSettings.activeBuildTarget.ToString();
var sourceDir = Path.Combine("HybridCLRData", "AssembliesPostIl2CppStrip", buildTarget);
var destinationDir = Path.Combine(Application.streamingAssetsPath, HotfixManifest.RootFolderName, HotfixManifest.AotMetadataFolderName);
var sourceDir = GetAotMetadataSourceDir(EditorUserBuildSettings.activeBuildTarget);
var destinationDir = GetStreamingAotMetadataDir();
if (!Directory.Exists(sourceDir))
{
@ -134,17 +186,59 @@ namespace TH1_Logic.Editor.HybridCLR
return false;
}
private static void CopyFile(string source, string destination, string label)
private static bool CopyFile(string source, string destination, string label)
{
if (!File.Exists(source))
{
Debug.LogWarning($"[TH1.HybridCLR] {label} source missing: {source}");
return;
return false;
}
Directory.CreateDirectory(Path.GetDirectoryName(destination));
File.Copy(source, destination, true);
Debug.Log($"[TH1.HybridCLR] Copied {label}: {destination}");
return true;
}
private static bool TryCompileHotfixDll(bool developmentBuild)
{
var compileCommandType = FindType("HybridCLR.Editor.Commands.CompileDllCommand");
if (compileCommandType == null)
{
Debug.LogWarning("[TH1.HybridCLR] CompileDllCommand was not found. Make sure the HybridCLR package has been resolved.");
return false;
}
var compileMethod = compileCommandType.GetMethod(
"CompileDll",
BindingFlags.Public | BindingFlags.Static,
null,
new[] { typeof(BuildTarget), typeof(bool) },
null);
if (compileMethod == null)
{
Debug.LogWarning("[TH1.HybridCLR] CompileDll(BuildTarget, bool) was not found.");
return false;
}
try
{
compileMethod.Invoke(null, new object[] { EditorUserBuildSettings.activeBuildTarget, developmentBuild });
return true;
}
catch (Exception e)
{
var root = e is TargetInvocationException && e.InnerException != null ? e.InnerException : e;
Debug.LogError($"[TH1.HybridCLR] Compile hotfix dll failed:\n{root}");
return false;
}
}
private static string FormatBytes(long length)
{
if (length >= 1024 * 1024) return $"{length / 1024f / 1024f:F2} MB";
if (length >= 1024) return $"{length / 1024f:F1} KB";
return $"{length} B";
}
private static Type FindType(string fullName)

View File

@ -11,7 +11,6 @@ using System.IO;
using Logic.Achievement;
using Logic.HeroTask;
using Logic.Multilingual;
using NUnit.Framework;
using RuntimeData;
using TH1_Logic.HeroTask;
using UnityEditor;

Some files were not shown because too many files have changed in this diff Show More