diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs index 15a6443..0385113 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/BuildAssetWindow.cs @@ -9,6 +9,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.IO.Compression; using System.Linq; using EditorFramework; using HybridCLR.Editor; @@ -28,7 +29,6 @@ namespace Stary.Evo.Editor { private static BuildAssetWindow window; - [MenuItem("Evo/资源打包工具")] static void ShowWindows() @@ -169,6 +169,7 @@ namespace Stary.Evo.Editor #endregion #region Update + [Title("BuildAssetButton", titleAlignment: TitleAlignments.Centered)] [HideLabel] public BuildAssetEntity onBuildPipelineEntity; @@ -184,7 +185,7 @@ namespace Stary.Evo.Editor private bool _isCheckDriveExist; - + [TitleGroup("UpdateAssetButton", alignment: TitleAlignments.Centered)] [HideLabel] [ShowIf( @@ -209,9 +210,35 @@ namespace Stary.Evo.Editor { if (EditorUtility.DisplayDialog("提示", $"开始上传至服务器[{selectedPackageNames}]!", "Yes", "No")) { - Stary.Evo.Editor.FileUtility.CopyDirectory( - $"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{BuildAssetDataSetting.packageName}/{BuildAssetDataSetting.packageVersion}", - updateServerPath); + // 新增:打包为zip的逻辑 + string zipFileName = + $"{BuildAssetDataSetting.packageName}_{BuildAssetDataSetting.packageVersion}.zip"; + var outputPackageDirectory = + $"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{BuildAssetDataSetting.packageName}"; + //拷贝目录 + string outFilePath = $"{outputPackageDirectory}/{BuildAssetDataSetting.packageVersion}"; + //输出目录 + string zipFilePath = Path.Combine(outputPackageDirectory, zipFileName); + try + { + // 压缩输出目录到zip文件(会覆盖已存在的同名文件) + ZipFile.CreateFromDirectory( + outFilePath, + zipFilePath, + System.IO.Compression.CompressionLevel.Optimal, + false + ); + + Debug.Log($"成功打包为zip:{zipFilePath}"); + } + catch (Exception ex) + { + Debug.LogError($"打包zip失败:{ex.Message}"); + return; + } + + Stary.Evo.Editor.FileUtility.Copy( + zipFilePath, $"{updateServerPath}/{zipFileName}", true); CreatePackageVersionJson(); @@ -248,7 +275,7 @@ namespace Stary.Evo.Editor base.DrawEditor(index); } GUILayout.EndScrollView(); - + BuildServerPath(); UpdateBuildPipelineButtonName(); } @@ -258,6 +285,7 @@ namespace Stary.Evo.Editor onBuildPipelineEntity.SetButtonName($"打包资源包【版本:{BuildAssetDataSetting.packageVersion}】"); onUpdateBuildPipelineEntity.SetButtonName($"更新至服务器【版本:{BuildAssetDataSetting.packageVersion}】"); } + /// /// 生成服务器路径 /// diff --git a/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs b/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs index d008e90..e3a14b3 100644 --- a/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs +++ b/Assets/00.StaryEvo/Editor/BuildAsset/ScriptableBuildPipelineViewer.cs @@ -43,6 +43,7 @@ namespace Stary.Evo.Editor buildParameters.BuiltinShadersBundleName = builtinShaderBundleName; buildParameters.EncryptionServices = CreateEncryptionInstance(); + ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline(); var buildResult = pipeline.Run(buildParameters, true); if (buildResult.Success) @@ -51,6 +52,7 @@ namespace Stary.Evo.Editor // EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); base.ExecuteBuild(); } + } /// diff --git a/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs b/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs index e7a4a3c..f99468a 100644 --- a/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs +++ b/Assets/00.StaryEvo/Runtime/Utility/WebRequestSystem.cs @@ -87,5 +87,8 @@ namespace Stary.Evo } + + + } } \ No newline at end of file diff --git a/Assets/Main/Config.meta b/Assets/Main/Config.meta new file mode 100644 index 0000000..bc261eb --- /dev/null +++ b/Assets/Main/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cffabde4e6a86aa4abfd2686fcbfb3b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Config/DomainConfig.asset b/Assets/Main/Config/DomainConfig.asset new file mode 100644 index 0000000..7d5a0ff --- /dev/null +++ b/Assets/Main/Config/DomainConfig.asset @@ -0,0 +1,18 @@ +%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: 03dc1bf5b95446838cce6d0fefed81fe, type: 3} + m_Name: DomainConfig + m_EditorClassIdentifier: + domain: + mainPrefab: Prefabs_UI + className: Hello + methodName: Run diff --git a/Assets/Main/Config/DomainConfig.asset.meta b/Assets/Main/Config/DomainConfig.asset.meta new file mode 100644 index 0000000..93725f5 --- /dev/null +++ b/Assets/Main/Config/DomainConfig.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3b6d9514b4a312439b12cc9c5f52969 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Editor.meta b/Assets/Main/Editor.meta new file mode 100644 index 0000000..905ad5f --- /dev/null +++ b/Assets/Main/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92096ae44651c5d469092abe04c14498 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Editor/BuildCommand.cs b/Assets/Main/Editor/BuildCommand.cs new file mode 100644 index 0000000..e693598 --- /dev/null +++ b/Assets/Main/Editor/BuildCommand.cs @@ -0,0 +1,288 @@ +using UnityEditor; +using System.Linq; +using System; +using System.IO; + +static class BuildCommand +{ + private const string KEYSTORE_PASS = "KEYSTORE_PASS"; + private const string KEY_ALIAS_PASS = "KEY_ALIAS_PASS"; + private const string KEY_ALIAS_NAME = "KEY_ALIAS_NAME"; + private const string KEYSTORE = "keystore.keystore"; + private const string BUILD_OPTIONS_ENV_VAR = "BuildOptions"; + private const string ANDROID_BUNDLE_VERSION_CODE = "VERSION_BUILD_VAR"; + private const string ANDROID_APP_BUNDLE = "BUILD_APP_BUNDLE"; + private const string SCRIPTING_BACKEND_ENV_VAR = "SCRIPTING_BACKEND"; + private const string VERSION_NUMBER_VAR = "VERSION_NUMBER_VAR"; + private const string VERSION_iOS = "VERSION_BUILD_VAR"; + + static string GetArgument(string name) + { + string[] args = Environment.GetCommandLineArgs(); + for (int i = 0; i < args.Length; i++) + { + if (args[i].Contains(name)) + { + return args[i + 1]; + } + } + return null; + } + + static string[] GetEnabledScenes() + { + return ( + from scene in EditorBuildSettings.scenes + where scene.enabled + where !string.IsNullOrEmpty(scene.path) + select scene.path + ).ToArray(); + } + + static BuildTarget GetBuildTarget() + { + string buildTargetName = GetArgument("customBuildTarget"); + Console.WriteLine(":: Received customBuildTarget " + buildTargetName); + + if (buildTargetName.ToLower() == "android") + { +#if !UNITY_5_6_OR_NEWER + // https://issuetracker.unity3d.com/issues/buildoptions-dot-acceptexternalmodificationstoplayer-causes-unityexception-unknown-project-type-0 + // Fixed in Unity 5.6.0 + // side effect to fix android build system: + EditorUserBuildSettings.androidBuildSystem = AndroidBuildSystem.Internal; +#endif + } + + if (buildTargetName.TryConvertToEnum(out BuildTarget target)) + return target; + + Console.WriteLine($":: {nameof(buildTargetName)} \"{buildTargetName}\" not defined on enum {nameof(BuildTarget)}, using {nameof(BuildTarget.NoTarget)} enum to build"); + + return BuildTarget.NoTarget; + } + + static string GetBuildPath() + { + string buildPath = GetArgument("customBuildPath"); + Console.WriteLine(":: Received customBuildPath " + buildPath); + if (buildPath == "") + { + throw new Exception("customBuildPath argument is missing"); + } + return buildPath; + } + + static string GetBuildName() + { + string buildName = GetArgument("customBuildName"); + Console.WriteLine(":: Received customBuildName " + buildName); + if (buildName == "") + { + throw new Exception("customBuildName argument is missing"); + } + return buildName; + } + + static string GetFixedBuildPath(BuildTarget buildTarget, string buildPath, string buildName) + { + if (buildTarget.ToString().ToLower().Contains("windows")) { + buildName += ".exe"; + } else if (buildTarget == BuildTarget.Android) { +#if UNITY_2018_3_OR_NEWER + buildName += EditorUserBuildSettings.buildAppBundle ? ".aab" : ".apk"; +#else + buildName += ".apk"; +#endif + } + return buildPath + buildName; + } + + static BuildOptions GetBuildOptions() + { + if (TryGetEnv(BUILD_OPTIONS_ENV_VAR, out string envVar)) { + string[] allOptionVars = envVar.Split(','); + BuildOptions allOptions = BuildOptions.None; + BuildOptions option; + string optionVar; + int length = allOptionVars.Length; + + Console.WriteLine($":: Detecting {BUILD_OPTIONS_ENV_VAR} env var with {length} elements ({envVar})"); + + for (int i = 0; i < length; i++) { + optionVar = allOptionVars[i]; + + if (optionVar.TryConvertToEnum(out option)) { + allOptions |= option; + } + else { + Console.WriteLine($":: Cannot convert {optionVar} to {nameof(BuildOptions)} enum, skipping it."); + } + } + + return allOptions; + } + + return BuildOptions.None; + } + + // https://stackoverflow.com/questions/1082532/how-to-tryparse-for-enum-value + static bool TryConvertToEnum(this string strEnumValue, out TEnum value) + { + if (!Enum.IsDefined(typeof(TEnum), strEnumValue)) + { + value = default; + return false; + } + + value = (TEnum)Enum.Parse(typeof(TEnum), strEnumValue); + return true; + } + + static bool TryGetEnv(string key, out string value) + { + value = Environment.GetEnvironmentVariable(key); + return !string.IsNullOrEmpty(value); + } + + static void SetScriptingBackendFromEnv(BuildTarget platform) { + var targetGroup = BuildPipeline.GetBuildTargetGroup(platform); + if (TryGetEnv(SCRIPTING_BACKEND_ENV_VAR, out string scriptingBackend)) { + if (scriptingBackend.TryConvertToEnum(out ScriptingImplementation backend)) { + Console.WriteLine($":: Setting ScriptingBackend to {backend}"); + PlayerSettings.SetScriptingBackend(targetGroup, backend); + } else { + string possibleValues = string.Join(", ", Enum.GetValues(typeof(ScriptingImplementation)).Cast()); + throw new Exception($"Could not find '{scriptingBackend}' in ScriptingImplementation enum. Possible values are: {possibleValues}"); + } + } else { + var defaultBackend = PlayerSettings.GetDefaultScriptingBackend(targetGroup); + Console.WriteLine($":: Using project's configured ScriptingBackend (should be {defaultBackend} for targetGroup {targetGroup}"); + } + } + + static void PerformBuild() + { + var buildTarget = GetBuildTarget(); + + Console.WriteLine(":: Performing build"); + if (TryGetEnv(VERSION_NUMBER_VAR, out var bundleVersionNumber)) + { + if (buildTarget == BuildTarget.iOS) + { + bundleVersionNumber = GetIosVersion(); + } + Console.WriteLine($":: Setting bundleVersionNumber to '{bundleVersionNumber}' (Length: {bundleVersionNumber.Length})"); + PlayerSettings.bundleVersion = bundleVersionNumber; + } + + if (buildTarget == BuildTarget.Android) { + HandleAndroidAppBundle(); + HandleAndroidBundleVersionCode(); + HandleAndroidKeystore(); + } + + var buildPath = GetBuildPath(); + var buildName = GetBuildName(); + var buildOptions = GetBuildOptions(); + var fixedBuildPath = GetFixedBuildPath(buildTarget, buildPath, buildName); + + SetScriptingBackendFromEnv(buildTarget); + + var buildReport = BuildPipeline.BuildPlayer(GetEnabledScenes(), fixedBuildPath, buildTarget, buildOptions); + + if (buildReport.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded) + throw new Exception($"Build ended with {buildReport.summary.result} status"); + + Console.WriteLine(":: Done with build"); + } + + private static void HandleAndroidAppBundle() + { + if (TryGetEnv(ANDROID_APP_BUNDLE, out string value)) + { +#if UNITY_2018_3_OR_NEWER + if (bool.TryParse(value, out bool buildAppBundle)) + { + EditorUserBuildSettings.buildAppBundle = buildAppBundle; + Console.WriteLine($":: {ANDROID_APP_BUNDLE} env var detected, set buildAppBundle to {value}."); + } + else + { + Console.WriteLine($":: {ANDROID_APP_BUNDLE} env var detected but the value \"{value}\" is not a boolean."); + } +#else + Console.WriteLine($":: {ANDROID_APP_BUNDLE} env var detected but does not work with lower Unity version than 2018.3"); +#endif + } + } + + private static void HandleAndroidBundleVersionCode() + { + if (TryGetEnv(ANDROID_BUNDLE_VERSION_CODE, out string value)) + { + if (int.TryParse(value, out int version)) + { + PlayerSettings.Android.bundleVersionCode = version; + Console.WriteLine($":: {ANDROID_BUNDLE_VERSION_CODE} env var detected, set the bundle version code to {value}."); + } + else + Console.WriteLine($":: {ANDROID_BUNDLE_VERSION_CODE} env var detected but the version value \"{value}\" is not an integer."); + } + } + + private static string GetIosVersion() + { + if (TryGetEnv(VERSION_iOS, out string value)) + { + if (int.TryParse(value, out int version)) + { + Console.WriteLine($":: {VERSION_iOS} env var detected, set the version to {value}."); + return version.ToString(); + } + else + Console.WriteLine($":: {VERSION_iOS} env var detected but the version value \"{value}\" is not an integer."); + } + + throw new ArgumentNullException(nameof(value), $":: Error finding {VERSION_iOS} env var"); + } + + private static void HandleAndroidKeystore() + { +#if UNITY_2019_1_OR_NEWER + PlayerSettings.Android.useCustomKeystore = false; +#endif + + if (!File.Exists(KEYSTORE)) { + Console.WriteLine($":: {KEYSTORE} not found, skipping setup, using Unity's default keystore"); + return; + } + + PlayerSettings.Android.keystoreName = KEYSTORE; + + string keystorePass; + string keystoreAliasPass; + + if (TryGetEnv(KEY_ALIAS_NAME, out string keyaliasName)) { + PlayerSettings.Android.keyaliasName = keyaliasName; + Console.WriteLine($":: using ${KEY_ALIAS_NAME} env var on PlayerSettings"); + } else { + Console.WriteLine($":: ${KEY_ALIAS_NAME} env var not set, using Project's PlayerSettings"); + } + + if (!TryGetEnv(KEYSTORE_PASS, out keystorePass)) { + Console.WriteLine($":: ${KEYSTORE_PASS} env var not set, skipping setup, using Unity's default keystore"); + return; + } + + if (!TryGetEnv(KEY_ALIAS_PASS, out keystoreAliasPass)) { + Console.WriteLine($":: ${KEY_ALIAS_PASS} env var not set, skipping setup, using Unity's default keystore"); + return; + } +#if UNITY_2019_1_OR_NEWER + PlayerSettings.Android.useCustomKeystore = true; +#endif + PlayerSettings.Android.keystorePass = keystorePass; + PlayerSettings.Android.keyaliasPass = keystoreAliasPass; + } +} diff --git a/Assets/Main/Editor/BuildCommand.cs.meta b/Assets/Main/Editor/BuildCommand.cs.meta new file mode 100644 index 0000000..4f989c6 --- /dev/null +++ b/Assets/Main/Editor/BuildCommand.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7c1e435333ed4df8b2e136d0be8c6843 +timeCreated: 1743490492 \ No newline at end of file diff --git a/Assets/Main/Editor/BuildPostProcess.cs b/Assets/Main/Editor/BuildPostProcess.cs new file mode 100644 index 0000000..4b2446c --- /dev/null +++ b/Assets/Main/Editor/BuildPostProcess.cs @@ -0,0 +1,71 @@ +using UnityEditor.Callbacks; +using UnityEditor; +using System.IO; +using UnityEngine; + +#if UNITY_IOS +using UnityEditor.iOS.Xcode; + +public static class BuildPostProcess +{ + private const string PLIST_FILE = "Info.plist"; + private const string EXIST_ON_SUSPEND_KEY = "UIApplicationExitsOnSuspend"; + + private const string VERSIONING_SYSTEM_KEY = "VERSIONING_SYSTEM"; + private const string CURRENT_PROJECT_VERSION_KEY = "CURRENT_PROJECT_VERSION"; + private const string APPLE_GENERIC_VALUE = "apple-generic"; + + private const string ENABLE_BITCODE_KEY = "ENABLE_BITCODE"; + + private const string CODE_SIGN_STYLE_KEY = "CODE_SIGN_STYLE"; + private const string PROVISIONING_PROFILE_SPECIFIER_KEY = "PROVISIONING_PROFILE_SPECIFIER"; + private const string PROVISIONING_PROFILE_KEY = "PROVISIONING_PROFILE"; + + + [PostProcessBuild(1)] + public static void IOSBuildPostProcess(BuildTarget target, string pathToBuiltProject) + { + RemoveDeprecatedInfoPListKeys(pathToBuiltProject); + + string projectPath = PBXProject.GetPBXProjectPath(pathToBuiltProject); + var pbxProject = new PBXProject(); + pbxProject.ReadFromFile(projectPath); + +#if UNITY_2020_1_OR_NEWER + var guidProject = pbxProject.GetUnityMainTargetGuid(); +#else + var guidProject = pbxProject.TargetGuidByName(pbxProject.GetUnityMainTargetGuid()); +#endif + + Debug.Log("Setting Versioning system to Apple Generic..."); + pbxProject.SetBuildProperty(guidProject, VERSIONING_SYSTEM_KEY, APPLE_GENERIC_VALUE); + pbxProject.SetBuildProperty(guidProject, CURRENT_PROJECT_VERSION_KEY, "1"); + + Debug.Log("Disabling bitcode..."); + pbxProject.SetBuildProperty(guidProject, ENABLE_BITCODE_KEY, "NO"); + + Debug.Log("Setting Code sign style to manual and setup provisioning profile specifier..."); + pbxProject.SetBuildProperty(guidProject, CODE_SIGN_STYLE_KEY, "Manual"); + pbxProject.SetBuildProperty(guidProject, PROVISIONING_PROFILE_SPECIFIER_KEY, pbxProject.GetBuildPropertyForAnyConfig(guidProject, PROVISIONING_PROFILE_KEY)); + + pbxProject.WriteToFile(projectPath); + } + + private static void RemoveDeprecatedInfoPListKeys(string pathToBuiltProject) + { + string plistPath = Path.Combine(pathToBuiltProject, PLIST_FILE); + PlistDocument plist = new PlistDocument(); + plist.ReadFromString(File.ReadAllText(plistPath)); + + PlistElementDict rootDict = plist.root; + + if (rootDict.values.ContainsKey(EXIST_ON_SUSPEND_KEY)) + { + Debug.LogFormat("Removing deprecated key \"{0}\" on \"{1}\" file", EXIST_ON_SUSPEND_KEY, PLIST_FILE); + rootDict.values.Remove(EXIST_ON_SUSPEND_KEY); + } + + File.WriteAllText(plistPath, plist.WriteToString()); + } +} +#endif diff --git a/Assets/Main/Editor/BuildPostProcess.cs.meta b/Assets/Main/Editor/BuildPostProcess.cs.meta new file mode 100644 index 0000000..5295b29 --- /dev/null +++ b/Assets/Main/Editor/BuildPostProcess.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e84dd163f51449218c7e6680b682e7e3 +timeCreated: 1743490492 \ No newline at end of file diff --git a/Assets/Main/Editor/YooAsset.meta b/Assets/Main/Editor/YooAsset.meta new file mode 100644 index 0000000..f5f24ad --- /dev/null +++ b/Assets/Main/Editor/YooAsset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0dfec6660d6d5d34c9a5b4ba8a2e3498 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Editor/YooAsset/PackageComparatorWindow.cs b/Assets/Main/Editor/YooAsset/PackageComparatorWindow.cs new file mode 100644 index 0000000..7d4d283 --- /dev/null +++ b/Assets/Main/Editor/YooAsset/PackageComparatorWindow.cs @@ -0,0 +1,163 @@ +using System.IO; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEditor; + +namespace YooAsset.Editor +{ + public class PackageComparatorWindow : EditorWindow + { + static PackageComparatorWindow _thisInstance; + + [MenuItem("Evo/YooAsset/补丁包比对工具", false, 102)] + static void ShowWindow() + { + if (_thisInstance == null) + { + _thisInstance = EditorWindow.GetWindow(typeof(PackageComparatorWindow), false, "补丁包比对工具", true) as PackageComparatorWindow; + _thisInstance.minSize = new Vector2(800, 600); + } + _thisInstance.Show(); + } + + private string _manifestPath1 = string.Empty; + private string _manifestPath2 = string.Empty; + private readonly List _changeList = new List(); + private readonly List _newList = new List(); + private readonly List _deleteList = new List(); + private Vector2 _scrollPos1; + private Vector2 _scrollPos2; + private Vector2 _scrollPos3; + private void OnGUI() + { + GUILayout.Space(10); + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button("选择补丁包1", GUILayout.MaxWidth(150))) + { + string resultPath = EditorUtility.OpenFilePanel("Find", "Assets/", "bytes"); + if (string.IsNullOrEmpty(resultPath)) + return; + _manifestPath1 = resultPath; + } + EditorGUILayout.LabelField(_manifestPath1); + EditorGUILayout.EndHorizontal(); + + GUILayout.Space(10); + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button("选择补丁包2", GUILayout.MaxWidth(150))) + { + string resultPath = EditorUtility.OpenFilePanel("Find", "Assets/", "bytes"); + if (string.IsNullOrEmpty(resultPath)) + return; + _manifestPath2 = resultPath; + } + EditorGUILayout.LabelField(_manifestPath2); + EditorGUILayout.EndHorizontal(); + + if (string.IsNullOrEmpty(_manifestPath1) == false && string.IsNullOrEmpty(_manifestPath2) == false) + { + if (GUILayout.Button("比对差异", GUILayout.MaxWidth(150))) + { + ComparePackage(_changeList, _newList); + } + } + + EditorGUILayout.Space(); + using (new EditorGUI.DisabledScope(false)) + { + int totalCount = _changeList.Count; + EditorGUILayout.Foldout(true, $"差异列表 ( {totalCount} )"); + + EditorGUI.indentLevel = 1; + _scrollPos1 = EditorGUILayout.BeginScrollView(_scrollPos1); + { + foreach (var bundle in _changeList) + { + EditorGUILayout.LabelField($"{bundle.BundleName} | {(bundle.FileSize / 1024)}K"); + } + } + EditorGUILayout.EndScrollView(); + EditorGUI.indentLevel = 0; + } + + EditorGUILayout.Space(); + using (new EditorGUI.DisabledScope(false)) + { + int totalCount = _newList.Count; + EditorGUILayout.Foldout(true, $"新增列表 ( {totalCount} )"); + + EditorGUI.indentLevel = 1; + _scrollPos2 = EditorGUILayout.BeginScrollView(_scrollPos2); + { + foreach (var bundle in _newList) + { + EditorGUILayout.LabelField($"{bundle.BundleName}"); + } + } + EditorGUILayout.EndScrollView(); + EditorGUI.indentLevel = 0; + } + EditorGUILayout.Space(); + using (new EditorGUI.DisabledScope(false)) + { + int totalCount = _deleteList.Count; + EditorGUILayout.Foldout(true, $"删除列表 ( {totalCount} )"); + + EditorGUI.indentLevel = 1; + _scrollPos3 = EditorGUILayout.BeginScrollView(_scrollPos3); + { + foreach (var bundle in _deleteList) + { + EditorGUILayout.LabelField($"{bundle.BundleName}"); + } + } + EditorGUILayout.EndScrollView(); + EditorGUI.indentLevel = 0; + } + } + + private void ComparePackage(List changeList, List newList) + { + changeList.Clear(); + newList.Clear(); + + // 加载补丁清单1 + byte[] bytesData1 = FileUtility.ReadAllBytes(_manifestPath1); + PackageManifest manifest1 = ManifestTools.DeserializeFromBinary(bytesData1); + + // 加载补丁清单1 + byte[] bytesData2 = FileUtility.ReadAllBytes(_manifestPath2); + PackageManifest manifest2 = ManifestTools.DeserializeFromBinary(bytesData2); + + // 拷贝文件列表 + foreach (var bundle2 in manifest2.BundleList) + { + if (manifest1.TryGetPackageBundleByBundleName(bundle2.BundleName, out PackageBundle bundle1)) + { + if (bundle2.FileHash != bundle1.FileHash) + { + changeList.Add(bundle2); + } + else + { + + //检测是否新增 + + } + + } + else + { + newList.Add(bundle2); + } + } + + // 按字母重新排序 + changeList.Sort((x, y) => string.Compare(x.BundleName, y.BundleName)); + newList.Sort((x, y) => string.Compare(x.BundleName, y.BundleName)); + + Debug.Log("资源包差异比对完成!"); + } + } +} diff --git a/Assets/Main/Editor/YooAsset/PackageComparatorWindow.cs.meta b/Assets/Main/Editor/YooAsset/PackageComparatorWindow.cs.meta new file mode 100644 index 0000000..efc87bd --- /dev/null +++ b/Assets/Main/Editor/YooAsset/PackageComparatorWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ff3c700b7f108b48998aa1630a769e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Resources.meta b/Assets/Main/Resources.meta new file mode 100644 index 0000000..d0eb665 --- /dev/null +++ b/Assets/Main/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b1f406d4fee216498272467f8d5ea4d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Resources/ArchitectureTemplate.txt b/Assets/Main/Resources/ArchitectureTemplate.txt new file mode 100644 index 0000000..b62544d --- /dev/null +++ b/Assets/Main/Resources/ArchitectureTemplate.txt @@ -0,0 +1,12 @@ + +namespace NamespaceX +{ + public class ArchitectureX : Architecture + { + protected override void Init() + { + //注册示例 + //RegisterSystem(new ScoreSystem()); + } + } +} \ No newline at end of file diff --git a/Assets/Main/Resources/ArchitectureTemplate.txt.meta b/Assets/Main/Resources/ArchitectureTemplate.txt.meta new file mode 100644 index 0000000..6b6d4dc --- /dev/null +++ b/Assets/Main/Resources/ArchitectureTemplate.txt.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87dbc7ed6b6d56d4192c57f52677788e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Resources/AssemblyDefinitionTemplate.txt b/Assets/Main/Resources/AssemblyDefinitionTemplate.txt new file mode 100644 index 0000000..433b9c2 --- /dev/null +++ b/Assets/Main/Resources/AssemblyDefinitionTemplate.txt @@ -0,0 +1,18 @@ +{ + "name": "MODULE_IDENT", + "rootNamespace": "ROOT_NAMESPACE", + "references": [ + "GUID:d1a793c2b6959e04ea45b972eaa369c8", + "GUID:e34a5702dd353724aa315fb8011f08c3", + "GUID:4492e37c9663479418f9522cc4796b57" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Main/Resources/AssemblyDefinitionTemplate.txt.meta b/Assets/Main/Resources/AssemblyDefinitionTemplate.txt.meta new file mode 100644 index 0000000..436b73e --- /dev/null +++ b/Assets/Main/Resources/AssemblyDefinitionTemplate.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0f96d3c3c5e9b98439185f95d7135c9b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Resources/BuildAssetDataSetting.asset b/Assets/Main/Resources/BuildAssetDataSetting.asset new file mode 100644 index 0000000..ad6a592 --- /dev/null +++ b/Assets/Main/Resources/BuildAssetDataSetting.asset @@ -0,0 +1,36 @@ +%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: 39a67460f559484da2b52def8ff05571, type: 3} + m_Name: BuildAssetDataSetting + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: [] + packageName: J0001 + packageVersionX: 1 + packageVersionY: 0 + packageVersionZ: 0 + environmentType: 1 + selectedBuildPipelines: 1 + packageVersion: 1.0.0 + VersionType: 0 + viewer: + clearBuildCacheToggle: 0 + useAssetDependencyDBToggle: 1 + copyBuildinFileOption: 1 + copyBuildinFileParams: diff --git a/Assets/Main/Resources/BuildAssetDataSetting.asset.meta b/Assets/Main/Resources/BuildAssetDataSetting.asset.meta new file mode 100644 index 0000000..4a1ec6b --- /dev/null +++ b/Assets/Main/Resources/BuildAssetDataSetting.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c92d0b29ec1042db972ce28367bb147 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Resources/DomainTemplate.txt b/Assets/Main/Resources/DomainTemplate.txt new file mode 100644 index 0000000..a25dd27 --- /dev/null +++ b/Assets/Main/Resources/DomainTemplate.txt @@ -0,0 +1,48 @@ +using System.Threading.Tasks; +using Stary.Evo; +using UnityEngine; +namespace NamespaceX +{ + public class ClassNameXX :DomainBase,IController + { + public override void OnEnter(string param) + { + base.OnEnter(param); + Debug.Log("UnityEvo: OnEnter进入成功"); + } + + public override void OnExit() + { + base.OnExit(); + GetArchitecture().Dispose(); + Debug.Log("UnityEvo: OnExit退出成功"); + } + + public override Task OnEnterAsync(string param) + { + Debug.Log("UnityEvo: OnEnterAsync进入成功"); + return base.OnEnterAsync(param); + } + + public override Task OnExitAsync() + { + Debug.Log("UnityEvo: OnEnterAsync退出成功"); + return base.OnExitAsync(); + } + + public IArchitecture GetArchitecture() + { + return ReturnArchitecture.Interface; + } + } + + + public class ArchitectureX : Architecture + { + protected override void Init() + { + //注册示例 + //RegisterSystem(new ScoreSystem()); + } + } +} \ No newline at end of file diff --git a/Assets/Main/Resources/DomainTemplate.txt.meta b/Assets/Main/Resources/DomainTemplate.txt.meta new file mode 100644 index 0000000..032cf0a --- /dev/null +++ b/Assets/Main/Resources/DomainTemplate.txt.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 021eede2852e4f19adfcb519fa2b7fbb +timeCreated: 1742540660 \ No newline at end of file diff --git a/Assets/Main/Resources/HotfixMainResDomain.asset b/Assets/Main/Resources/HotfixMainResDomain.asset new file mode 100644 index 0000000..65eae46 --- /dev/null +++ b/Assets/Main/Resources/HotfixMainResDomain.asset @@ -0,0 +1,21 @@ +%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: 1a78aa2541a743f89b2646efe4073f01, type: 3} + m_Name: HotfixMainResDomain + m_EditorClassIdentifier: com.stary.evo.runtime:Stary.Evo:HotfixMainResDomain + hotfixMainResDomainEntity: + domain: MainDomain + ipconfig: http://192.168.31.100:5005/HotRefresh + pathconfig: + packageVersion: + username: UnityHot + password: Unity1234 diff --git a/Assets/Main/Resources/HotfixMainResDomain.asset.meta b/Assets/Main/Resources/HotfixMainResDomain.asset.meta new file mode 100644 index 0000000..1008477 --- /dev/null +++ b/Assets/Main/Resources/HotfixMainResDomain.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: baae28693819e9642b1bb2f800ecce11 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Resources/MainDomainAll.asset b/Assets/Main/Resources/MainDomainAll.asset new file mode 100644 index 0000000..873554e --- /dev/null +++ b/Assets/Main/Resources/MainDomainAll.asset @@ -0,0 +1,43 @@ +%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: 2745f06c743a4d8aaf3d993312e39f02, type: 3} + m_Name: MainDomainAll + m_EditorClassIdentifier: + domainAll: + - isVideo: 1 + domainName: X_02_01 + - isVideo: 1 + domainName: X_02_02 + - isVideo: 1 + domainName: X_03_01_01 + - isVideo: 1 + domainName: X_03_01_02 + - isVideo: 1 + domainName: X_03_02_01 + - isVideo: 1 + domainName: X_03_02_02 + - isVideo: 1 + domainName: X_03_02_03 + - isVideo: 1 + domainName: X_04_01 + - isVideo: 1 + domainName: X_04_02 + - isVideo: 1 + domainName: X_04_03 + - isVideo: 1 + domainName: X_04_04 + - isVideo: 1 + domainName: X_04_05 + - isVideo: 1 + domainName: X_05_01 + - isVideo: 1 + domainName: X_06_01 diff --git a/Assets/Main/Resources/MainDomainAll.asset.meta b/Assets/Main/Resources/MainDomainAll.asset.meta new file mode 100644 index 0000000..3ce0c59 --- /dev/null +++ b/Assets/Main/Resources/MainDomainAll.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8fce04c662e892f44a5237be36b53f2c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Resources/PointGatherData.asset b/Assets/Main/Resources/PointGatherData.asset new file mode 100644 index 0000000..c7e10d1 --- /dev/null +++ b/Assets/Main/Resources/PointGatherData.asset @@ -0,0 +1,140 @@ +%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: 79b808b96820ad546951a6859e2a99be, type: 3} + m_Name: PointGatherData + m_EditorClassIdentifier: + ZoneDatas: + - id: 2 + name: X_02 + desc: "\u751F\u547D\u5065\u5EB7\u533A" + spriteName: ui_zone1_shengmingjiankangqu + position: {x: -12.82, y: 0, z: 5.85} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + pointDatas: + - id: 1 + name: X_02_01 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u5168\u751F\u547D\u5468\u671F" + - id: 2 + name: X_02_02 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u4EBA\u4F53\u516B\u5927\u7CFB\u7EDF" + - id: 3 + name: X_03 + desc: "\u5065\u5EB7\u5F71\u54CD\u56E0\u7D20\u533A" + spriteName: ui_zone2_jiankangyingxiangyinsuqu + position: {x: -10.44, y: 0, z: 5.85} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + pointDatas: + - id: 1 + name: X_03_01_01 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u5BA4\u5916\u5927\u73AF\u5883\u5F71\u54CD\u56E0\u7D20" + - id: 2 + name: X_03_01_02 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u53A8\u623F\u73AF\u5883\u5F71\u54CD\u56E0\u7D20" + - id: 4 + name: X_04 + desc: "\u751F\u547D\u9632\u62A4\u533A" + spriteName: ui_zone3_shengmingfanghuqu + position: {x: -7.65, y: 0, z: 5.85} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + pointDatas: + - id: 3 + name: X_03_02_01 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u542C\u529B\u5065\u5EB7" + - id: 4 + name: X_03_02_02 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u89C6\u529B\u5065\u5EB7" + - id: 5 + name: X_03_02_03 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u53E3\u8154\u5065\u5EB7" + - id: 4 + name: X_05 + desc: "\u5065\u5EB7\u7D20\u517B\u533A" + spriteName: ui_zone4_jiankangsuyangqu + position: {x: -4.54, y: 0, z: 5.85} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + pointDatas: + - id: 1 + name: X_04_01 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u80A5\u80D6\u5371\u9669\u56E0\u7D20\uFF08\u6162\u75C5\uFF09" + - id: 2 + name: X_04_02 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u4F20\u67D3\u75C5" + - id: 3 + name: X_04_03 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u75C5\u5A92\u751F\u7269\u751F\u7269\u4F20\u67D3\u75C5" + - id: 4 + name: X_04_04 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u72C2\u72AC\u75C5" + - id: 5 + name: X_04_05 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u5FAE\u751F\u7269\u5927\u4F5C\u6218" + - id: 6 + name: X_06 + desc: "\u5065\u5EB7\u751F\u6D3B\u65B9\u5F0F\u533A" + spriteName: ui_zone5_jiankangshenghuofangshiqu + position: {x: -1.04, y: 0, z: 5.85} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + pointDatas: + - id: 1 + name: X_05_01 + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u60C5\u7EEA\u6025\u6551\u7BB1" + - id: 1 + name: ' X_06_01' + position: {x: 0, y: 0, z: 0} + rotation: {x: -0, y: 0, z: 0} + scale: {x: 1, y: 1, z: 1} + desc: "\u996E\u9152\u5371\u5BB3" + targetGameObject: {fileID: 0} diff --git a/Assets/Main/Resources/PointGatherData.asset.meta b/Assets/Main/Resources/PointGatherData.asset.meta new file mode 100644 index 0000000..2b36d2a --- /dev/null +++ b/Assets/Main/Resources/PointGatherData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17ac95220ddc8a449804eb0969d6297b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script.meta b/Assets/Main/Script.meta new file mode 100644 index 0000000..90efbde --- /dev/null +++ b/Assets/Main/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fbceddee670338442a9efee8c4a64fe2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Editor.meta b/Assets/Main/Script/Editor.meta new file mode 100644 index 0000000..def8a5f --- /dev/null +++ b/Assets/Main/Script/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f50e24669aba44ba98efe5c74695fed5 +timeCreated: 1744077396 \ No newline at end of file diff --git a/Assets/Main/Script/Editor/DomainBaseEditor.cs b/Assets/Main/Script/Editor/DomainBaseEditor.cs new file mode 100644 index 0000000..50975bc --- /dev/null +++ b/Assets/Main/Script/Editor/DomainBaseEditor.cs @@ -0,0 +1,79 @@ +// using UnityEditor; +// using UnityEngine; +// +// namespace Stary.Evo +// { +// [CustomEditor(typeof(DomainBase), true)] +// public class DomainBaseEditor : UnityEditor.Editor +// { +// //定义序列化属性 +// // private SerializedProperty intValue; +// // private SerializedProperty floatValue; +// // private SerializedProperty stringValue; +// // private SerializedProperty boolValue; +// // private SerializedProperty vector3Value; +// // private SerializedProperty enumValue; +// // private SerializedProperty colorValue; +// // private SerializedProperty textureValue; +// /// +// /// 序列化属性,在OnEnable中获取 +// /// +// [HideInInspector] +// private SerializedProperty domainConfig; +// [HideInInspector] +// private SerializedProperty domainName; +// +// private UnityEditor.Editor cacheEditor; +// private void OnEnable() +// { +// domainConfig = serializedObject.FindProperty("domainConfig"); +// if (!Application.isPlaying) +// { +// +// domainName = serializedObject.FindProperty("DomainName"); +// domainConfig.objectReferenceValue = +// AssetDatabase.LoadAssetAtPath( +// $"Assets/Domain/{domainName.stringValue}/AddressableRes/Config/DomainConfig.asset"); +// } +// //通过名字查找被序列化属性。 +// // intValue = serializedObject.FindProperty("intValue"); +// // floatValue = serializedObject.FindProperty("floatValue"); +// // stringValue = serializedObject.FindProperty("stringValue"); +// // boolValue = serializedObject.FindProperty("boolValue"); +// // vector3Value = serializedObject.FindProperty("vector3Value"); +// // enumValue = serializedObject.FindProperty("enumValue"); +// // colorValue = serializedObject.FindProperty("colorValue"); +// // textureValue = serializedObject.FindProperty("textureValue"); +// } +// +// public override void OnInspectorGUI() +// { +// //表示更新序列化物体 +// serializedObject.Update(); +// +// // EditorGUILayout.PropertyField(domainConfig,new GUIContent("111"),true); +// +// +// var data = ((DomainConfig)domainConfig.objectReferenceValue); +// if (data != null) +// { +// //创建TestClass的Editor +// if (cacheEditor == null) +// cacheEditor = UnityEditor. Editor.CreateEditor(data); +// cacheEditor.OnInspectorGUI(); +// } +// +// +// // EditorGUILayout.PropertyField(intValue); +// // EditorGUILayout.PropertyField(floatValue); +// // EditorGUILayout.PropertyField(stringValue); +// // EditorGUILayout.PropertyField(boolValue); +// // EditorGUILayout.PropertyField(vector3Value); +// // EditorGUILayout.PropertyField(enumValue); +// // EditorGUILayout.PropertyField(colorValue); +// // EditorGUILayout.PropertyField(textureValue); +// //应用修改的属性值,不加的话,Inspector面板的值修改不了 +// serializedObject.ApplyModifiedProperties(); +// } +// } +// } \ No newline at end of file diff --git a/Assets/Main/Script/Editor/DomainBaseEditor.cs.meta b/Assets/Main/Script/Editor/DomainBaseEditor.cs.meta new file mode 100644 index 0000000..c17f21d --- /dev/null +++ b/Assets/Main/Script/Editor/DomainBaseEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4ca49f66bd64466d8cf1ede3acb36592 +timeCreated: 1744097384 \ No newline at end of file diff --git a/Assets/Main/Script/Editor/HybridClREntranceEditor.cs b/Assets/Main/Script/Editor/HybridClREntranceEditor.cs new file mode 100644 index 0000000..22b44a0 --- /dev/null +++ b/Assets/Main/Script/Editor/HybridClREntranceEditor.cs @@ -0,0 +1,51 @@ +using Stary.Evo.Editor; +using UnityEditor; +using UnityEngine; + +namespace Stary.Evo +{ + [CustomEditor(typeof(HybridClREntrance))] + public class HybridClREntranceEditor : UnityEditor.Editor + { + /// + /// 序列化属性,在OnEnable中获取 + /// + [HideInInspector] + private SerializedProperty domain; + + private string[] domainNames; + private void OnEnable() + { + domain = serializedObject.FindProperty("domain"); + domainNames = CreatAssetWindow.GetCreatDomainAllName(); + + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // 获取当前选中的索引 + int selectedIndex = System.Array.IndexOf(domainNames, domain.stringValue); + if (selectedIndex < 0) selectedIndex = 0; // 默认选中第一个 + + // 绘制下拉选择框 + selectedIndex = EditorGUILayout.Popup("Domain", selectedIndex, domainNames); + + // 更新选择的域名 + domain.stringValue = domainNames[selectedIndex]; + + serializedObject.ApplyModifiedProperties(); + + HybridClREntrance hybridClREntrance = target as HybridClREntrance; + if (GUILayout.Button("打开Domain")) + { + hybridClREntrance.OpenDomain(); + } + if (GUILayout.Button("关闭Domain")) + { + hybridClREntrance.CloseDomain(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Editor/HybridClREntranceEditor.cs.meta b/Assets/Main/Script/Editor/HybridClREntranceEditor.cs.meta new file mode 100644 index 0000000..4db11a8 --- /dev/null +++ b/Assets/Main/Script/Editor/HybridClREntranceEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d0996e24f28249ccb2bfb2a14e1358c1 +timeCreated: 1744706140 \ No newline at end of file diff --git a/Assets/Main/Script/Editor/PointGatherDataEditor.cs b/Assets/Main/Script/Editor/PointGatherDataEditor.cs new file mode 100644 index 0000000..b46c090 --- /dev/null +++ b/Assets/Main/Script/Editor/PointGatherDataEditor.cs @@ -0,0 +1,66 @@ +using Stary.Evo.Editor; +using UnityEditor; +using UnityEngine; + +namespace Main +{ + [CustomEditor(typeof(PointGatherData))] + public class PointGatherDataEditor : UnityEditor.Editor + { + + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + base.OnInspectorGUI(); + + PointGatherData pointGatherData = target as PointGatherData; + if (GUILayout.Button("一键生成坐标数据")) + { + + ZoneController[] zoneControllers = FindObjectsOfType(true); + PointController[] pointControllers = FindObjectsOfType(true); + for (int i = 0; i < pointGatherData.ZoneDatas.Count; i++) + { + ZoneData zoneData = pointGatherData.ZoneDatas[i]; + + foreach (var zoneController in zoneControllers) + { + if (zoneController.name == zoneData.name) + { + zoneData.position = zoneController.transform.localPosition; + zoneData.rotation = zoneController.transform.localEulerAngles; + zoneData.scale = zoneController.transform.localScale; + } + } + + + for (int j = 0; j < zoneData.pointDatas.Count; j++) + { + PointData pointData = zoneData.pointDatas[j]; + + + + foreach (var pointController in pointControllers) + { + if (pointController.name == pointData.name) + { + pointData.position = pointController.transform.localPosition; + pointData.rotation = pointController.transform.localEulerAngles; + pointData.scale = pointController.transform.localScale; + } + } + + } + } + + EditorUtility.SetDirty(pointGatherData); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + + } + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Editor/PointGatherDataEditor.cs.meta b/Assets/Main/Script/Editor/PointGatherDataEditor.cs.meta new file mode 100644 index 0000000..0f7b111 --- /dev/null +++ b/Assets/Main/Script/Editor/PointGatherDataEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6eaaeb57d33f5704e8cd6b9527d78a6b +timeCreated: 1744706140 \ No newline at end of file diff --git a/Assets/Main/Script/Editor/stary.main.editor.asmdef b/Assets/Main/Script/Editor/stary.main.editor.asmdef new file mode 100644 index 0000000..87fc410 --- /dev/null +++ b/Assets/Main/Script/Editor/stary.main.editor.asmdef @@ -0,0 +1,20 @@ +{ + "name": "stary.main.editor", + "rootNamespace": "", + "references": [ + "GUID:4492e37c9663479418f9522cc4796b57", + "GUID:d1a793c2b6959e04ea45b972eaa369c8", + "GUID:044184040b21c434b8aee6f2a3424c06" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Main/Script/Editor/stary.main.editor.asmdef.meta b/Assets/Main/Script/Editor/stary.main.editor.asmdef.meta new file mode 100644 index 0000000..a78943d --- /dev/null +++ b/Assets/Main/Script/Editor/stary.main.editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5c6af7aee383dac46b510d588d1b015d +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime.meta b/Assets/Main/Script/Runtime.meta new file mode 100644 index 0000000..2f75eb2 --- /dev/null +++ b/Assets/Main/Script/Runtime.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ea087baad4524017b420384544bfae06 +timeCreated: 1744077212 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Base.meta b/Assets/Main/Script/Runtime/Base.meta new file mode 100644 index 0000000..4aef910 --- /dev/null +++ b/Assets/Main/Script/Runtime/Base.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a15f3bb70d00bcd4b8c01eb4ace17c3b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Base/AppConfig.cs b/Assets/Main/Script/Runtime/Base/AppConfig.cs new file mode 100644 index 0000000..fa2031e --- /dev/null +++ b/Assets/Main/Script/Runtime/Base/AppConfig.cs @@ -0,0 +1,52 @@ +using System; +using UnityEngine; + +namespace Stary.Evo +{ + public class AppConfig + { + /// + /// package name + /// + public static string ASSETPACKGENAME; + + /// + /// 热更资源路径 + /// + public static string PATHCONFIG; + + public static string IPCONFIG; + public static string USERNAME; + public static string PASSWORD; + + public static string IPCONFIGVideo; + + /// + /// 主场景main实例物体 + /// + private static GameObject _MainBaseModel; + + /// + /// 赋值默认的实例 + /// + public static void SetDefaultMainInstance(GameObject mainbase) + { + _MainBaseModel = mainbase; + } + + /// + /// 赋值默认的实例 + /// + public static GameObject GetDefaultMainInstance() + { + return _MainBaseModel; + } + } + + public class GlobalConfig + { + public const string RikidHandLeft = "LeftHandRender/RKHandVisual/Hand_L/left_wrist/left_palm"; + public const string RikidHandRight = "RightHandRender/RKHandVisual/Hand_R/right_wrist/right_palm"; + public const string RikidHandRightIndexTip = "RightHandRender/RKHandVisual/Hand_R/right_wrist/right_index_metacarpal/right_index_proximal/right_index_intermediate/right_index_distal/right_index_tip"; + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Base/AppConfig.cs.meta b/Assets/Main/Script/Runtime/Base/AppConfig.cs.meta new file mode 100644 index 0000000..1cc2871 --- /dev/null +++ b/Assets/Main/Script/Runtime/Base/AppConfig.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 43c9d32ba5934c65bf80d76e35074a1a +timeCreated: 1741162242 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Base/DomainBase.cs b/Assets/Main/Script/Runtime/Base/DomainBase.cs new file mode 100644 index 0000000..97fe134 --- /dev/null +++ b/Assets/Main/Script/Runtime/Base/DomainBase.cs @@ -0,0 +1,88 @@ +using System; +using System.Threading.Tasks; +using Cysharp.Threading.Tasks; +using Main; +using Stary.Evo.AudioCore; +using UnityEngine; +using UnityEngine.Events; +using YooAsset; + +namespace Stary.Evo +{ + /// + /// 热更基类,应该继承的基类 + /// + public class DomainBase : MonoBehaviour + { + public string DomainName { protected get; set; } + + public Transform TransformInfo; + protected bool isExit { private get; set; } + + /// + /// 触发Domain时,调用该方法 + /// + /// + public virtual void OnEnter(string param) + { + TransformInfo = transform.Find("TransformInfo"); + } + + /// + /// Domain被关闭时,会调该方法 + /// + /// + public virtual void OnExit() + { + isExit = true; + AudioCoreManager.StopMusic(); + MainArchitecture.Interface.GetSystem().StopVideo(); + MainArchitecture.Interface.GetSystem().KillTalkState(); + } + + + + public virtual async Task OnEnterAsync(string param) + { + isExit = true; + } + + public virtual async Task OnExitAsync() + { + await ForceUnloadAllAssets(); + } + + private async void OnDestroy() + { + // if (!isExit) + // { + // OnExit(); + // await OnExitAsync(); + // } + + } + + // 强制卸载所有资源包,该方法请在合适的时机调用。 + // 注意:Package在销毁的时候也会自动调用该方法。 + private async UniTask ForceUnloadAllAssets() + { + var package = YooAssets.TryGetPackage(DomainName); + if (package != null) + { + var operation = package.UnloadAllAssetsAsync(); + await operation; + await package.DestroyAsync(); + YooAssets.RemovePackage(DomainName); + + Resources.UnloadUnusedAssets(); + GC.Collect(); + GC.WaitForPendingFinalizers(); + Debug.Log($"UnityEvo:{DomainName} 资源包已卸载..."); + } + else + { + Debug.LogWarning($"UnityEvo:{DomainName} 资源包不存在,请检查是否已经卸载还是卸载异常..."); + } + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Base/DomainBase.cs.meta b/Assets/Main/Script/Runtime/Base/DomainBase.cs.meta new file mode 100644 index 0000000..a17165a --- /dev/null +++ b/Assets/Main/Script/Runtime/Base/DomainBase.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8923efe3eb184e7f9283f71e2dc4ea10 +timeCreated: 1742540500 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/ClassObjectPool.meta b/Assets/Main/Script/Runtime/ClassObjectPool.meta new file mode 100644 index 0000000..565c74b --- /dev/null +++ b/Assets/Main/Script/Runtime/ClassObjectPool.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 555a223b39dcb90489791ddba86221e6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/ClassObjectPool/IClassPool.cs b/Assets/Main/Script/Runtime/ClassObjectPool/IClassPool.cs new file mode 100644 index 0000000..1ed0f38 --- /dev/null +++ b/Assets/Main/Script/Runtime/ClassObjectPool/IClassPool.cs @@ -0,0 +1,136 @@ +using System.Collections.Generic; +using UnityEngine; +using YooAsset; + +namespace Main +{ + /// + /// 类对象池 + /// + public interface IClassPool + { + /// + /// 将类对象存进池里 + /// + /// + void Creation(GameObject obj); + /// + /// 从未激活池里面取类对象,并放入激活池 + /// + /// + GameObject Spawn(Transform parent); + /// + /// 从激活池中释放类对象到未激活池中 + /// + GameObject RecycleSpawn(GameObject obj); + /// + /// 回收类对象 + /// + /// + /// + + /// + /// 清空类对象池 + /// + void RecycleAll(); + + int GetPolLength(); + } + public class ClassObjectPool:IClassPool + { + private AssetHandle poolObject; + + /// + /// 回收对象的父物体 + /// + private Transform recycle; + + protected List activepool = new List(); + protected Stack inactivepool = new Stack(); + //没有回收的个数 + protected int noRecycleCount; + + public ClassObjectPool(AssetHandle poolObject,Transform recycle) + { + this.poolObject = poolObject; + this.recycle = recycle; + } + /// + /// 将类对象存进池里 + /// + /// + public void Creation(GameObject obj) + { + inactivepool.Push(obj); + noRecycleCount++; + } + + + + /// + /// 从未激活池里面取类对象,并放入激活池 + /// + /// 如果为空是否new出来 + public GameObject Spawn(Transform parent) + { + GameObject obj = null; + if(noRecycleCount>0) + { + obj = inactivepool.Pop(); + obj.transform.SetParent(parent); + noRecycleCount--; + if(obj==null) + Debug.LogErrorFormat("对象池中不存在此对象【{0}】请排查代码", obj); + } + else + { + obj= poolObject.InstantiateSync(parent); + } + obj.transform.localPosition = Vector3.zero; + obj.transform.localRotation = Quaternion.identity; + obj.transform.localScale = Vector3.one; + obj.SetActive(true); + activepool.Add(obj); + + return obj; + } + /// + /// 从激活池中释放类对象到未激活池中 + /// + public GameObject RecycleSpawn(GameObject obj) + { + if(obj!=null&&activepool.Contains(obj)) + { + activepool.Remove(obj); + inactivepool.Push(obj); + obj.transform.parent = recycle; + obj.gameObject.SetActive(false); + noRecycleCount++; + } + return null; + } + + /// + /// 清空类对象池 + /// + public void RecycleAll() + { + noRecycleCount=0; + + foreach (var pool in inactivepool) + { + GameObject.Destroy(pool); + } + inactivepool.Clear(); + foreach (var pool in activepool) + { + GameObject.Destroy(pool); + } + activepool.Clear(); + } + public int GetPolLength() + { + return inactivepool.Count; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/ClassObjectPool/IClassPool.cs.meta b/Assets/Main/Script/Runtime/ClassObjectPool/IClassPool.cs.meta new file mode 100644 index 0000000..b9a6c42 --- /dev/null +++ b/Assets/Main/Script/Runtime/ClassObjectPool/IClassPool.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a4fc6b70fe91726439cc0d19d7e92edc +timeCreated: 1626164240 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Data.meta b/Assets/Main/Script/Runtime/Data.meta new file mode 100644 index 0000000..239d685 --- /dev/null +++ b/Assets/Main/Script/Runtime/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08e4dd259b2cfef419fa885222c533b1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Data/PointGatherData.cs b/Assets/Main/Script/Runtime/Data/PointGatherData.cs new file mode 100644 index 0000000..f873084 --- /dev/null +++ b/Assets/Main/Script/Runtime/Data/PointGatherData.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(fileName = "PointGatherData", menuName = "Evo/Create PointGatherData")] +public class PointGatherData : ScriptableObject +{ + public List ZoneDatas; + + [SerializeField] + private GameObject targetGameObject; +} +/// +/// 区域数据 +/// +[Serializable] +public class ZoneData +{ + public int id; + public string name; + public string desc; + public string spriteName; + public Vector3 position; + public Vector3 rotation; + public Vector3 scale; + public List pointDatas; +} +/// +/// 点位数据 +/// +[Serializable] +public class PointData +{ + public int id; + public string name; + public Vector3 position; + public Vector3 rotation; + public Vector3 scale; + public string desc; +} diff --git a/Assets/Main/Script/Runtime/Data/PointGatherData.cs.meta b/Assets/Main/Script/Runtime/Data/PointGatherData.cs.meta new file mode 100644 index 0000000..e1f0714 --- /dev/null +++ b/Assets/Main/Script/Runtime/Data/PointGatherData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79b808b96820ad546951a6859e2a99be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Enum.meta b/Assets/Main/Script/Runtime/Enum.meta new file mode 100644 index 0000000..c070e9c --- /dev/null +++ b/Assets/Main/Script/Runtime/Enum.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d6e6dd49414a42798be9ca333f1d433e +timeCreated: 1744883587 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Enum/Mode.cs b/Assets/Main/Script/Runtime/Enum/Mode.cs new file mode 100644 index 0000000..0abd65e --- /dev/null +++ b/Assets/Main/Script/Runtime/Enum/Mode.cs @@ -0,0 +1,8 @@ +public enum ZoneType +{ + X_02, + X_03, + X_04, + X_05, + X_06, +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Enum/Mode.cs.meta b/Assets/Main/Script/Runtime/Enum/Mode.cs.meta new file mode 100644 index 0000000..f9309f6 --- /dev/null +++ b/Assets/Main/Script/Runtime/Enum/Mode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 71a657f436a24eb182bc89d7d8abd80d +timeCreated: 1744883618 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm.meta b/Assets/Main/Script/Runtime/Fsm.meta new file mode 100644 index 0000000..05191c1 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0346f4dcafef4fe7b87b5db6881b56e1 +timeCreated: 1741164620 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/FsmLoadSystem.cs b/Assets/Main/Script/Runtime/Fsm/FsmLoadSystem.cs new file mode 100644 index 0000000..02ee445 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/FsmLoadSystem.cs @@ -0,0 +1,17 @@ +namespace Stary.Evo +{ + public class FsmLoadSystem : FsmSystem , IFsmSystem + { + private OpenDomainType OpenDomainType { get; set; } + + + public void SetOpenDomainType(OpenDomainType type) + { + this.OpenDomainType = type; + } + public OpenDomainType GetOpenDomainType() + { + return this.OpenDomainType; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/FsmLoadSystem.cs.meta b/Assets/Main/Script/Runtime/Fsm/FsmLoadSystem.cs.meta new file mode 100644 index 0000000..03813f4 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/FsmLoadSystem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1f012ae5832b467a802b8d775b1dae1e +timeCreated: 1744710396 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/HotFixState.cs b/Assets/Main/Script/Runtime/Fsm/HotFixState.cs new file mode 100644 index 0000000..3855467 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/HotFixState.cs @@ -0,0 +1,257 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Cysharp.Threading.Tasks; +using HybridCLR; +using UnityEngine; +using YooAsset; + +namespace Stary.Evo +{ + public class HotFixState : AbstractFSMIState + { + public string[] PatchedAOTAssemblyList = new string[] + { + "System.Core.dll", + "UnityEngine.CoreModule.dll", + "mscorlib.dll", + "DOTween.dll", + "InformationSave.RunTime.dll", + "UIFarme.RunTime.dll", + "UniTask.dll", + "YooAsset.dll", + "com.stary.evo.runtime.dll" + + }; + public HotFixState(IFsmSystem system) : base(system) + { + } + + public override async UniTask OnEnterAsync(T param) + { + DomainConfig domainConfig = param as DomainConfig; + Debug.Log("UnityEvo:热更脚本..."); + var package = YooAssets.GetPackage(AppConfig.ASSETPACKGENAME); + // Editor环境下,HotUpdate.dll.bytes已经被自动加载,不需要加载,重复加载反而会出问题。 + + + // 添加类型存在性检查 + string fullClassName = $"{domainConfig.@namespace}.{domainConfig.className}"; + +#if EDITOR_SIMULATEMODE + // Editor下无需加载,直接查找获得HotUpdate程序集 + Assembly hotUpdateAss = System.AppDomain.CurrentDomain.GetAssemblies() + .First(a => a.GetName().Name == $"HotUpdate_{AppConfig.ASSETPACKGENAME}"); +#else + string hotUpdateAssemblyName = $"HotUpdate_{AppConfig.ASSETPACKGENAME}"; + + + Type assemblyType = IsAssetLoaded(fullClassName); + if (assemblyType!=null) + { + Debug.Log($"UnityEvo:热更程序集:{hotUpdateAssemblyName} 已经加载过了"); + FsmSystem.SetCurState(nameof(LoadResState), domainConfig, assemblyType); + return; + } + + + //判断DLL是否下载成功 + foreach (var aot in PatchedAOTAssemblyList) + { + var aotName = $"Android_{aot}"; + var handle = package.LoadAssetAsync(aotName); + await handle; + if (handle.Status == EOperationStatus.Succeed) + { + var assetObj = handle.AssetObject as TextAsset; + _sAssetDatas.Add(assetObj); + Debug.Log($"UnityEvo:dll:{aotName} ,下载成功"); + } + else + { + Debug.Log($"UnityEvo:dll:{aotName} ,下载失败"); + } + } + + //先补元数据 + LoadMetadataForAOTAssemblies(); + + // 加载热更dll + var hotfixDll = package.LoadAssetAsync($"Android_HotUpdate_{AppConfig.ASSETPACKGENAME}.dll"); + await hotfixDll; + var hotfixPdb = package.LoadAssetAsync($"Android_HotUpdate_{AppConfig.ASSETPACKGENAME}.pdb"); + await hotfixPdb; + Assembly hotUpdateAss = null; + if (hotfixDll.Status == EOperationStatus.Succeed) + { + var hotfixDllAsset = hotfixDll.AssetObject as TextAsset; + if (hotfixPdb.Status == EOperationStatus.Succeed) + { + Debug.Log($"UnityEvo:dll:加载成功!!"); + var hotfixPdbAsset = hotfixPdb.AssetObject as TextAsset; + hotUpdateAss = Assembly.Load(hotfixDllAsset.bytes, hotfixPdbAsset.bytes); + } + else + { + if (hotfixDllAsset != null) + hotUpdateAss = Assembly.Load(hotfixDllAsset.bytes); + } + } + else + { + Debug.LogError($"UnityEvo:Android_HotUpdate_{AppConfig.ASSETPACKGENAME}.dll加载失败!!!!!"); + } + + +#endif + if (hotUpdateAss != null) + { + + Type type = hotUpdateAss.GetType(fullClassName); + + if (type == null) + { + Debug.LogError($"UnityEvo:热更类不存在!程序集: {hotUpdateAss.FullName}\n" + + $"期望类名: {fullClassName}\n" + + $"可用类型列表:{string.Join("\n", hotUpdateAss.GetTypes().Select(t => t.FullName))}"); + return; + } + + // 添加方法存在性检查 + MethodInfo onEnterMethod = type.GetMethod("OnEnter"); + MethodInfo onEnterAsyncMethod = type.GetMethod("OnEnterAsync"); + + if (onEnterMethod == null || onEnterAsyncMethod == null) + { + Debug.LogError($"UnityEvo:热更类进入方法缺失!\n" + + $"存在方法:{string.Join(", ", type.GetMethods().Select(m => m.Name))}"); + return; + } + + MethodInfo onExitMethod = type.GetMethod("OnExit"); + MethodInfo onExitAsyncMethod = type.GetMethod("OnExitAsync"); + if (onExitMethod == null || onExitAsyncMethod == null) + { + Debug.LogError($"UnityEvo:热更类退出方法缺失!\n" + + $"存在方法:{string.Join(", ", type.GetMethods().Select(m => m.Name))}"); + return; + } + Debug.Log($"UnityEvo:dll:Type检查成功!!"); + // AppConfig.SetDefaultHotfixType(type); + FsmSystem.SetCurState(nameof(LoadResState), domainConfig, type); + // // 创建热更类实例 + // DomainBase hotfixInstance = AppConfig.HOTFIXBASE.AddComponent(type) as DomainBase; + // + // if (hotfixInstance == null) + // { + // Debug.LogError($"热更类{fullClassName}实例创建失败!必须继承MonoBehaviour"); + // return; + // } + // + // + // // 原有调用逻辑修改为使用实例 + // onEnterMethod.Invoke(hotfixInstance, new object[] { "" }); // 第一个参数改为实例对象 + // onEnterAsyncMethod.Invoke(hotfixInstance, new object[] { "" }); + } + else + { + Debug.LogError($"UnityEvo:热更类不存在!程序集: hotUpdateAss 不存在\n" + + $"期望类名: {fullClassName}\n" + + $"可用类型列表:{string.Join("\n", hotUpdateAss.GetTypes().Select(t => t.FullName))}"); + } + } + + public override UniTask OnEnterAsync() + { + return UniTask.CompletedTask; + } + + public override UniTask OnEnterAsync(T1 param1, T2 param2) + { + return UniTask.CompletedTask; + } + + #region 补充元数据 + + // //补充元数据dll的列表 + // //通过RuntimeApi.LoadMetadataForAOTAssembly()函数来补充AOT泛型的原始元数据 + // private List AOTMetaAssemblyFiles { get; } =new() + // { + // "Android_mscorlib.dll", "Android_System.dll", "Android_System.Core.dll", + // }; + + private readonly List _sAssetDatas = new List(); + + + // public byte[] ReadBytesFromStreamingAssets(string dllName) + // { + // if (_sAssetDatas.ContainsKey(dllName)) + // { + // return _sAssetDatas[dllName].bytes; + // } + // + // return Array.Empty(); + // } + + + /// + /// 为aot assembly加载原始metadata, 这个代码放aot或者热更新都行。 + /// 一旦加载后,如果AOT泛型函数对应native实现不存在,则自动替换为解释模式执行 + /// + private void LoadMetadataForAOTAssemblies() + { + HomologousImageMode mode = HomologousImageMode.SuperSet; + // foreach (var aotDllName in AOTGenericReferences.PatchedAOTAssemblyList) + foreach (var aotDll in _sAssetDatas) + { + // var aotName = $"Android_{aotDllName}"; + // + // byte[] dllBytes = ReadBytesFromStreamingAssets(aotName); + if (aotDll != null) + { + byte[] dllBytes = aotDll.bytes; + // 添加元数据加载校验 + if (dllBytes == null || dllBytes.Length == 0) + { + Debug.LogError($"AOT元数据加载失败:{aotDll.name}"); + continue; + } + + LoadImageErrorCode err = HybridCLR.RuntimeApi.LoadMetadataForAOTAssembly(dllBytes, mode); + + Debug.Log($"UnityEvo:【补元】{aotDll.name} 加载结果: {err} 字节数: {dllBytes.Length}"); + } + } + } + + #endregion + + private Type IsAssetLoaded(string assemblyName) + { + var assemblies = AppDomain.CurrentDomain.GetAssemblies(); + foreach (var assembly in assemblies) + { + Type assemblyType = assembly.GetType(assemblyName); + if (assemblyType!=null) + { + + Debug.Log("type:" + assemblyType); + return assemblyType; + } + } + return null; + } + + public override void OnUpdate() + { + base.OnUpdate(); + } + + public override UniTask OnExitAsync() + { + _sAssetDatas.Clear(); + return UniTask.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/HotFixState.cs.meta b/Assets/Main/Script/Runtime/Fsm/HotFixState.cs.meta new file mode 100644 index 0000000..ae61829 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/HotFixState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 693e2ecffc1b43caa7c7818e3aba708c +timeCreated: 1741165298 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/LoadResMainState.cs b/Assets/Main/Script/Runtime/Fsm/LoadResMainState.cs new file mode 100644 index 0000000..4b199e2 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/LoadResMainState.cs @@ -0,0 +1,88 @@ +using Cysharp.Threading.Tasks; +using Main; +using UnityEngine; +using YooAsset; + +namespace Stary.Evo +{ + public class LoadResMainState : AbstractFSMIState + { + private string _doMain = "Main"; + + public LoadResMainState(IFsmSystem system) : base(system) + { + } + + + + public override async UniTask OnEnterAsync() + { + Debug.Log("加载资源..."); + var package = YooAssets.GetPackage(_doMain); + + DomainConfig config = null; + //加载热更配置文件 + var loadHotfixSettingsOp = package.LoadAssetAsync("Config_DomainConfig"); + await loadHotfixSettingsOp; + if (loadHotfixSettingsOp.Status == EOperationStatus.Succeed) + { + //更新成功 + Debug.Log($"UnityEvo:加载主配置文件 loadHotfixSettings : 【成功】"); + config = loadHotfixSettingsOp.AssetObject as DomainConfig; + } + else + { + Debug.LogError($"UnityEvo:加载主配置文件 loadHotfixSettings : 【失败】"); + } + + // 加载热更资源 + var loadOperation = package.LoadAssetAsync(config.mainPrefab); + + await loadOperation; + if (loadOperation.Status == EOperationStatus.Succeed) + { + GameObject loadhotfix = loadOperation.InstantiateSync(); + AppConfig.SetDefaultMainInstance(loadhotfix); + if (loadhotfix != null) + { + DomainBase hotfixInstance = loadhotfix.GetComponent(); + if (hotfixInstance == null) + { + hotfixInstance = loadhotfix.AddComponent(); + } + + if (hotfixInstance == null) + { + Debug.LogError($"热更类{loadhotfix.name}实例创建失败!必须继承MonoBehaviour"); + return; + } + + + // 原有调用逻辑修改为使用实例 + hotfixInstance.OnEnter(""); + hotfixInstance.OnEnterAsync(""); + } + } + } + + public override UniTask OnEnterAsync(T param) + { + return UniTask.CompletedTask; + } + public override UniTask OnEnterAsync(T1 param1, T2 param2) + { + return UniTask.CompletedTask; + } + public override void OnUpdate() + { + base.OnUpdate(); + } + + + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/LoadResMainState.cs.meta b/Assets/Main/Script/Runtime/Fsm/LoadResMainState.cs.meta new file mode 100644 index 0000000..1f01cbc --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/LoadResMainState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c0fed0de80c04e7fb0f513ce21fed7b9 +timeCreated: 1744361114 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/LoadResState.cs b/Assets/Main/Script/Runtime/Fsm/LoadResState.cs new file mode 100644 index 0000000..a6e27fb --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/LoadResState.cs @@ -0,0 +1,92 @@ +using System; +using Cysharp.Threading.Tasks; +using Stary.Evo.InformationSave; +using UnityEngine; +using YooAsset; + +namespace Stary.Evo +{ + public class LoadResState : AbstractFSMIState + { + public GameObject mainPrefab; + + public LoadResState(IFsmSystem system) : base(system) + { + } + + + public override UniTask OnEnterAsync() + { + return UniTask.CompletedTask; + } + + public override UniTask OnEnterAsync(T param) + { + return UniTask.CompletedTask; + } + + public override async UniTask OnEnterAsync(T1 param1, T2 param2) + { + Debug.Log("加载资源..."); + DomainConfig domainConfig = param1 as DomainConfig; + Type type = param2 as Type; + var package = YooAssets.GetPackage(domainConfig.domain); + + // 加载热更资源 + var loadOperation = package.LoadAssetAsync(domainConfig.mainPrefab); + + await loadOperation; + if (loadOperation.Status == EOperationStatus.Succeed) + { + mainPrefab = loadOperation.InstantiateSync(); + LocalTransformInfo info = mainPrefab.GetComponentInChildren(); + FsmLoadSystem fsmLoadSystem = FsmSystem as FsmLoadSystem; + + if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.DEFAULT) + { + info.Switch(0); + } + else if (fsmLoadSystem.GetOpenDomainType() == OpenDomainType.VIOICE) + { + info.Switch(1); + } + if (mainPrefab != null) + { + DomainBase hotfixInstance = mainPrefab.GetComponent(type) as DomainBase; + if (hotfixInstance == null) + { + hotfixInstance = mainPrefab.AddComponent(type) as DomainBase; + } + + hotfixInstance.DomainName = domainConfig.domain; + if (hotfixInstance == null) + { + Debug.LogError($"热更类{type.Name}实例创建失败!必须继承MonoBehaviour"); + return; + } + + + // 原有调用逻辑修改为使用实例 + hotfixInstance.OnEnter(""); + hotfixInstance.OnEnterAsync(""); + } + } + } + + public override void OnUpdate() + { + base.OnUpdate(); + } + + + + public override async UniTask OnExitAsync() + { + Debug.Log("UnityEvo:Domain退出..."); + DomainBase domainBase = mainPrefab.GetComponent(); + domainBase.OnExit(); + await domainBase.OnExitAsync(); + GameObject.Destroy(domainBase.gameObject); + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/LoadResState.cs.meta b/Assets/Main/Script/Runtime/Fsm/LoadResState.cs.meta new file mode 100644 index 0000000..70f5020 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/LoadResState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f689e40cd4654793a8f1d3ce69ba3532 +timeCreated: 1741165763 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/ResStartState.cs b/Assets/Main/Script/Runtime/Fsm/ResStartState.cs new file mode 100644 index 0000000..9c23063 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/ResStartState.cs @@ -0,0 +1,247 @@ +using System; +using Cysharp.Threading.Tasks; +using Newtonsoft.Json; +using UnityEditor; +using UnityEngine; +using UnityEngine.Assertions; +using UnityEngine.Networking; +using YooAsset; + +namespace Stary.Evo +{ + public class ResStartState : AbstractFSMIState + { + public ResStartState(IFsmSystem system) : base(system) + { + } + + + + + public override async UniTask OnEnterAsync() + { + Debug.Log("UnityEvo:启动开始资源初始化..."); + + + //初始化读取资源配置表 + HotfixMainResDomain hotfixMainResDomain = Resources.Load("HotfixMainResDomain"); + if (hotfixMainResDomain != null) + { + AppConfig.IPCONFIG = hotfixMainResDomain.hotfixMainResDomainEntity.ipconfig; + AppConfig.USERNAME = hotfixMainResDomain.hotfixMainResDomainEntity.username; + AppConfig.PASSWORD = hotfixMainResDomain.hotfixMainResDomainEntity.password; + } + Debug.Log($"UnityEvo:读取资源配置表成功...{ AppConfig.IPCONFIG}{AppConfig.USERNAME}{AppConfig.PASSWORD}"); + // 初始化资源系统 + YooAssets.Initialize(); + + + //自定义网络请求器 + // 设置自定义请求委托 + YooAssets.SetDownloadSystemUnityWebRequest(NasWebRequester); + + + //初始化资源加载模块 + // 增加包存在性检查 + var package = YooAssets.TryGetPackage(AppConfig.ASSETPACKGENAME); + if (package == null) + { + Debug.LogWarning($"UnityEvo:资源包 {AppConfig.ASSETPACKGENAME} 不存在,正在尝试创建..."); + package = YooAssets.CreatePackage(AppConfig.ASSETPACKGENAME); + } + + YooAssets.SetDefaultPackage(package); + + // 初始化资源包 +#if EDITOR_SIMULATEMODE + await EDITOR_SIMULATEMODE(package); + AppConfig.IPCONFIGVideo = "http://192.168.31.100:9527/"; +#elif OFFLINE_PLAYMODE + await OFFLINE_PLAYMODE(package); + AppConfig.IPCONFIGVideo = Application.streamingAssetsPath + "/"; + +#elif HOST_PLAYMODE + if (package.PackageName.Equals("Main")) + { + await OFFLINE_PLAYMODE(package); + } + else + { + await HOST_PLAYMODE(package); + } + + AppConfig.IPCONFIGVideo = "http://192.168.31.100:9527/"; +#elif WEB_PLAYMODE + // IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); + // var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters(); + // var webRemoteFileSystemParams = + // FileSystemParameters.CreateDefaultWebRemoteFileSystemParameters(remoteServices); //支持跨域下载 + // + // var initParameters = new WebPlayModeParameters(); + // initParameters.WebServerFileSystemParameters = webServerFileSystemParams; + // initParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams; + // + // var initOperation = package.InitializeAsync(initParameters); + // await initOperation; + // + // if (initOperation.Status == EOperationStatus.Succeed) + // Debug.Log("UnityEvo:资源包初始化成功!"); + // else + // Debug.LogError($"UnityEvo:资源包初始化失败:{initOperation.Error}"); + + Debug.LogError($"UnityEvo:暂不支持"); +#endif + + FsmSystem.SetCurState(nameof(ResUpdateServerState)); + } + + public override UniTask OnEnterAsync(T param) + { + return UniTask.CompletedTask; + } + public override UniTask OnEnterAsync(T1 param1, T2 param2) + { + return UniTask.CompletedTask; + } + public override void OnUpdate() + { + base.OnUpdate(); + } + + + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + + private async UniTask EDITOR_SIMULATEMODE(ResourcePackage package) + { + var buildResult = EditorSimulateModeHelper.SimulateBuild(AppConfig.ASSETPACKGENAME); + var packageRoot = buildResult.PackageRootDirectory; + var editorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot); + var initParams = new EditorSimulateModeParameters(); + initParams.EditorFileSystemParameters = editorFileSystemParameters; + var initialization = package.InitializeAsync(initParams); + await initialization; + if (initialization.Status == EOperationStatus.Succeed) + { + Assert.AreEqual(EOperationStatus.Succeed, initialization.Status); + Debug.Log("UnityEvo:资源包初始化成功!"); + } + else + { + Debug.LogError($"UnityEvo:资源包初始化失败:{initialization.Error}"); + } + } + + private async UniTask OFFLINE_PLAYMODE(ResourcePackage package) + { + var buildinFileSystemParams = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); + var initParameters = new OfflinePlayModeParameters(); + initParameters.BuildinFileSystemParameters = buildinFileSystemParams; + var initOperation = package.InitializeAsync(initParameters); + await initOperation; + + if (initOperation.Status == EOperationStatus.Succeed) + Debug.Log("UnityEvo:从本地加载资源包,初始化成功!"); + else + Debug.LogError($"UnityEvo:从本地加载资源包,初始化失败:{initOperation.Error}"); + } + + public async UniTask HOST_PLAYMODE(ResourcePackage package) + { + // 新增平台判断代码 +#if UNITY_EDITOR + BuildTarget buildTarget = UnityEditor.EditorUserBuildSettings.activeBuildTarget; + string platformName = buildTarget.ToString(); +#else + string platformName = Application.platform.ToString(); +#endif + Debug.Log($"目标平台标识: {platformName}"); + //从服务器加载配置列表 + WebRequestSystem webRequestSystem = new WebRequestSystem(); + string URL = + $"{AppConfig.IPCONFIG}/HybridclrConfigData/{AppConfig.ASSETPACKGENAME}/{platformName}/{Application.productName}.json"; + Debug.Log("UnityEvo: 服务器配置文件地址:" + URL); + string text = await webRequestSystem.Get(URL, GetAuthorization(AppConfig.USERNAME, AppConfig.PASSWORD)); + if (!string.IsNullOrEmpty(text)) + { + try + { + Debug.Log("UnityEvo: 服务器配置文件读取成功:" + text); + text = text.Trim('\uFEFF'); // 移除 BOM 字符 + HotfixMainResDomainEntity hotfixMainResDomainEntity = + JsonConvert.DeserializeObject(text); + if (hotfixMainResDomainEntity != null && + hotfixMainResDomainEntity.domain == AppConfig.ASSETPACKGENAME) + { + AppConfig.IPCONFIG = hotfixMainResDomainEntity.ipconfig; + AppConfig.PATHCONFIG = hotfixMainResDomainEntity.pathconfig; + AppConfig.ASSETPACKGENAME = hotfixMainResDomainEntity.domain; + } + else + { + throw new Exception("服务器配置文件中Domain与指定domain不匹配,进程中断,请排查:" + AppConfig.ASSETPACKGENAME); + } + } + catch (JsonException e) + { + Debug.LogError($"UnityEvo:JSON解析失败: {e.Message}\n原始内容: {text}"); + } + } + else + { + Debug.LogError("UnityEvo:从服务器获取的配置数据为空"); + } + + + string defaultHostServer = $"{AppConfig.IPCONFIG}/{AppConfig.PATHCONFIG}"; + string fallbackHostServer = $"{AppConfig.IPCONFIG}/{AppConfig.PATHCONFIG}"; + + Debug.Log($"UnityEvo:正在初始化远程资源包,主服务器:{defaultHostServer}"); + // 在初始化下载器前添加证书验证配置 + + + var initParameters = new HostPlayModeParameters(); + IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); + var cacheFileSystemParams = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices); + cacheFileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true); + + var buildinFileSystemParams = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); + buildinFileSystemParams.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true); + buildinFileSystemParams.AddParameter(FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST, true); + initParameters.BuildinFileSystemParameters = null; + initParameters.CacheFileSystemParameters = cacheFileSystemParams; + + var initOperation = package.InitializeAsync(initParameters); + + await initOperation; + + if (initOperation.Status == EOperationStatus.Succeed) + Debug.Log("UnityEvo:从远程加载资源包,初始化成功!"); + else + Debug.LogError($"UnityEvo:从远程加载资源包,初始化失败:{initOperation.Error}"); + } + + /// + /// 自定义网络请求器需要登录 + /// + /// + /// + private UnityWebRequest NasWebRequester(string url) + { + var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET); + var authorization = GetAuthorization(AppConfig.USERNAME, AppConfig.PASSWORD); + request.SetRequestHeader("AUTHORIZATION", authorization); + return request; + } + + private string GetAuthorization(string userName, string password) + { + string auth = userName + ":" + password; + var bytes = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(auth); + return "Basic " + System.Convert.ToBase64String(bytes); + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/ResStartState.cs.meta b/Assets/Main/Script/Runtime/Fsm/ResStartState.cs.meta new file mode 100644 index 0000000..9ac9b55 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/ResStartState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2462c737fc9c4b53b35557f8a6aac453 +timeCreated: 1741165298 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/ResUpdateLocalState.cs b/Assets/Main/Script/Runtime/Fsm/ResUpdateLocalState.cs new file mode 100644 index 0000000..b17add4 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/ResUpdateLocalState.cs @@ -0,0 +1,132 @@ +using Cysharp.Threading.Tasks; +using UnityEngine; +using UnityEngine.Assertions; +using YooAsset; + +namespace Stary.Evo +{ + public class ResUpdateLocalState : AbstractFSMIState + { + + + public ResUpdateLocalState(IFsmSystem system) : base(system) + { + } + + + + + + public override async UniTask OnEnterAsync() + { + //初始化读取资源配置表 + var package = YooAssets.GetPackage(AppConfig.ASSETPACKGENAME); + + + //更新失败 + + Debug.Log($"UnityEvo:切换为加载本地缓存资源..."); + + // 获取上次成功记录的版本 + string packageVersion = PlayerPrefs.GetString("GAME_VERSION", string.Empty); + if (string.IsNullOrEmpty(packageVersion)) + { + Debug.Log($"UnityEvo:没有找到本地版本记录,需要更新资源!"); + return; + } + + Debug.Log($"UnityEvo:获取资源版本 Version : 【{packageVersion}】"); + Debug.Log($"UnityEvo:开始加载本地资源..."); + // Assert.AreEqual(EOperationStatus.Succeed, requetVersionOp.Status); + + + // 加载本地缓存的资源清单文件 + var updateManifestOp = package.UpdatePackageManifestAsync(packageVersion); + await updateManifestOp; + if (updateManifestOp.Status == EOperationStatus.Succeed) + { + //更新成功 + Debug.Log($"UnityEvo:更新本地资源清单 updateManifest : 【成功】"); + } + else + { + //更新失败 + Debug.LogError($"UnityEvo:加载本地资源清单文件失败,需要更新资源!: 【{updateManifestOp.Error}】"); + return; + } + + Assert.AreEqual(EOperationStatus.Succeed, updateManifestOp.Status); + + + //4.下载补丁包 + await Download(); + + + //加载热更配置文件 + var loadHotfixSettingsOp = package.LoadAssetAsync("Config_DomainConfig"); + await loadHotfixSettingsOp; + DomainConfig domainConfig = null; + if (loadHotfixSettingsOp.Status == EOperationStatus.Succeed) + { + //更新成功 + Debug.Log($"UnityEvo:加载热更配置文件 DomainConfig : 【成功】"); + domainConfig = loadHotfixSettingsOp.AssetObject as DomainConfig; + } + else + { + Debug.LogError($"UnityEvo:加载热更配置文件 DomainConfig : 【失败】"); + } + + if (package.PackageName.Equals("Main")) + { + FsmSystem.SetCurState(nameof(LoadResMainState)); + } + else + { + if (domainConfig == null) + { + Debug.LogError($"UnityEvo:【{package.PackageName}】加载DomainConfig为空,无法继续执行后续流程,请检查!!!"); + } + FsmSystem.SetCurState(nameof(HotFixState), domainConfig); + } + } + + public override UniTask OnEnterAsync(T param) + { + return UniTask.CompletedTask; + } + public override UniTask OnEnterAsync(T1 param1, T2 param2) + { + return UniTask.CompletedTask; + } + public override void OnUpdate() + { + base.OnUpdate(); + } + + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + + #region 下载热更资源 + + public async UniTask Download() + { + int downloadingMaxNum = 1; + int failedTryAgain = 1; + var package = YooAssets.GetPackage(AppConfig.ASSETPACKGENAME); + var downloader = package.CreateResourceDownloader(downloadingMaxNum, failedTryAgain); + + // 在正常开始游戏之前,还需要验证本地清单内容的完整性。 + if (downloader.TotalDownloadCount > 0) + { + Debug.Log("UnityEvo:资源内容本地并不完整,需要更新资源!"); + return; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/ResUpdateLocalState.cs.meta b/Assets/Main/Script/Runtime/Fsm/ResUpdateLocalState.cs.meta new file mode 100644 index 0000000..7cfcdb9 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/ResUpdateLocalState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eca158039896455dba3ded1eb703a5da +timeCreated: 1742291100 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/ResUpdateServerState.cs b/Assets/Main/Script/Runtime/Fsm/ResUpdateServerState.cs new file mode 100644 index 0000000..8d76df5 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/ResUpdateServerState.cs @@ -0,0 +1,214 @@ +using Cysharp.Threading.Tasks; +using UnityEngine; +using UnityEngine.Assertions; +using YooAsset; + +namespace Stary.Evo +{ + public class ResUpdateServerState : AbstractFSMIState + { + + + + public ResUpdateServerState(IFsmSystem system) : base(system) + { + } + + public override async UniTask OnEnterAsync() + { + Debug.Log("UnityEvo:开始资源更新..."); + + + // //初始化读取资源配置表 + var package = YooAssets.GetPackage(AppConfig.ASSETPACKGENAME); + // 请求资源版本 + var requetVersionOp = package.RequestPackageVersionAsync(); + await requetVersionOp; + string packageVersion = ""; + if (requetVersionOp.Status == EOperationStatus.Succeed) + { + //更新成功 + packageVersion = requetVersionOp.PackageVersion; + PlayerPrefs.SetString("GAME_VERSION", packageVersion); + Debug.Log($"UnityEvo:获取资源版本 Version : 【{packageVersion}】"); + Debug.Log($"UnityEvo:开始加载服务器资源..."); + } + else + { + Debug.LogError($"UnityEvo:获取资源版本失败: 【{requetVersionOp.Error}】"); + FsmSystem.SetCurState(nameof(ResUpdateLocalState)); + return; + } + + // Assert.AreEqual(EOperationStatus.Succeed, requetVersionOp.Status); + + + // 更新资源清单 + var updateManifestOp = package.UpdatePackageManifestAsync(packageVersion); + await updateManifestOp; + if (updateManifestOp.Status == EOperationStatus.Succeed) + { + //更新成功 + Debug.Log($"UnityEvo:更新资源清单 updateManifest : 【成功】"); + } + else + { + //更新失败 + Debug.LogError($"UnityEvo:更新资源清单失败: 【{updateManifestOp.Error}】"); + } + + Assert.AreEqual(EOperationStatus.Succeed, updateManifestOp.Status); + + + + + //4.下载补丁包 + await Download(); + + + + + //加载热更配置文件 + var loadHotfixSettingsOp = package.LoadAssetAsync("Config_DomainConfig"); + await loadHotfixSettingsOp; + DomainConfig domainConfig = null; + if (loadHotfixSettingsOp.Status == EOperationStatus.Succeed) + { + //更新成功 + Debug.Log($"UnityEvo:加载热更配置文件 loadHotfixSettings : 【成功】"); + domainConfig = loadHotfixSettingsOp.AssetObject as DomainConfig; + } + else + { + Debug.LogError($"UnityEvo:加载热更配置文件 loadHotfixSettings : 【失败】"); + } + + if (package.PackageName.Equals("Main")) + { + FsmSystem.SetCurState(nameof(LoadResMainState)); + } + else + { + if (domainConfig == null) + { + Debug.LogError($"UnityEvo:【{package.PackageName}】加载DomainConfig为空,无法继续执行后续流程,请检查!!!"); + } + FsmSystem.SetCurState(nameof(HotFixState), domainConfig); + } + } + public override UniTask OnEnterAsync(T param) + { + return UniTask.CompletedTask; + } + public override UniTask OnEnterAsync(T1 param1, T2 param2) + { + return UniTask.CompletedTask; + } + public override void OnUpdate() + { + base.OnUpdate(); + } + + + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + + #region 下载热更资源 + + public async UniTask Download() + { + // 在任意MonoBehaviour或DomainBase派生类中 + string[] andUnzipAsyncPath= await ZipTool.DownloadAndUnzipAsync( + $"{AppConfig.IPCONFIG}/XOSMOPlug_inLibrary/{AppConfig.ASSETPACKGENAME}/Android/1.0.5/X_02_01_1.0.5.zip", + Application.persistentDataPath + "/DownloadedContent", + progress => Debug.Log($"下载进度:{progress:P0}"), + progress => Debug.Log($"解压进度:{progress:P0}") + ); + var package = YooAssets.GetPackage(AppConfig.ASSETPACKGENAME); + var downloader = package.CreateResourceImporter(andUnzipAsyncPath, 3, 3); + + + + + // int downloadingMaxNum = 10; + // int failedTryAgain = 3; + // var package = YooAssets.GetPackage(AppConfig.ASSETPACKGENAME); + // var downloader = package.CreateResourceDownloader(downloadingMaxNum, failedTryAgain); + + // //没有需要下载的资源 + // if (downloader.TotalDownloadCount == 0) + // { + // Debug.Log("UnityEvo:没有需要下载的资源,跳过更新"); + // return; + // } + // + // //需要下载的文件总数和总大小 + // int totalDownloadCount = downloader.TotalDownloadCount; + // long totalDownloadBytes = downloader.TotalDownloadBytes; + // Debug.Log($"UnityEvo:需要下载的资源的个数【{totalDownloadCount}】,需要下载的资源的总大小{totalDownloadBytes/1024} MB"); + // //===================================适应新版本YooAsset插件的修改=================================== + // //注册回调方法 + // downloader.DownloadErrorCallback = OnDownloadErrorFunction; + // downloader.DownloadUpdateCallback = OnDownloadProgressUpdateFunction; + // downloader.DownloadFinishCallback = OnDownloadOverFunction; + // downloader.DownloadFileBeginCallback = OnStartDownloadFileFunction; + // //===================================适应新版本YooAsset插件的修改=================================== + // + // //开启下载 + // downloader.BeginDownload(); + await downloader; + + //检测下载结果 + if (downloader.Status == EOperationStatus.Succeed) + { + //下载成功 + Debug.Log("UnityEvo:资源更新完成"); + } + else + { + //下载失败 + Debug.Log("UnityEvo:资源更新失败"); + } + } + + //===================================适应新版本YooAsset插件的修改=================================== + /// + /// 开始下载 + /// + private void OnStartDownloadFileFunction(DownloadFileData downloadFileData) + { + Debug.Log($"UnityEvo:开始下载:文件名:{downloadFileData.FileName},文件大小:{downloadFileData.FileSize/1024f/1024f} MB"); + } + + /// + /// 下载完成 + /// + private void OnDownloadOverFunction(DownloaderFinishData downloaderFinishData) + { + Debug.Log("UnityEvo:下载" + (downloaderFinishData.Succeed ? "成功" : "失败")); + } + + /// + /// 更新中 + /// + private void OnDownloadProgressUpdateFunction(DownloadUpdateData downloadUpdateData) + { + Debug.Log($"UnityEvo:文件总数:{downloadUpdateData.TotalDownloadCount},已下载文件数:{downloadUpdateData.CurrentDownloadCount},下载总大小:{downloadUpdateData.TotalDownloadBytes/1024f/1024f} MB,已下载大小{downloadUpdateData.CurrentDownloadBytes/1024f/1024f} MB"); + } + + /// + /// 下载出错 + /// + /// + private void OnDownloadErrorFunction(DownloadErrorData errorData) + { + Debug.Log($"UnityEvo:下载出错:包名:{errorData.PackageName} 文件名:{errorData.FileName},错误信息:{errorData.ErrorInfo}"); + } + //===================================适应新版本YooAsset插件的修改=================================== + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Fsm/ResUpdateServerState.cs.meta b/Assets/Main/Script/Runtime/Fsm/ResUpdateServerState.cs.meta new file mode 100644 index 0000000..f066681 --- /dev/null +++ b/Assets/Main/Script/Runtime/Fsm/ResUpdateServerState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bf15fa0d3ca74b0991fd60bef616d007 +timeCreated: 1741248693 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate.meta b/Assets/Main/Script/Runtime/HotUpdate.meta new file mode 100644 index 0000000..832f9c8 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 45d07e1bb40ffcf4c8d9dc0cc5c31331 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/HotUpdate/GeneratedConst.cs b/Assets/Main/Script/Runtime/HotUpdate/GeneratedConst.cs new file mode 100644 index 0000000..9b87949 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/GeneratedConst.cs @@ -0,0 +1,27 @@ +public class _Const +{ + public const int LAYER_DEFAULT = 0; + public const int LAYER_TRANSPARENTFX = 1; + public const int LAYER_IGNORE_RAYCAST = 2; + public const int LAYER_WATER = 4; + public const int LAYER_UI = 5; + public const int LAYER_LAYER6 = 6; + public const int LAYER_LAYER7 = 7; + public const int LAYER_LAYER8 = 8; + public const int LAYER_LAYER9 = 9; + public const int LAYER_LAYER10 = 10; + public const int LAYER_LAYER11 = 11; + public const int LAYER_LAYER12 = 12; + public const int LAYER_LAYER13 = 13; + public const int LAYER_LAYER14 = 14; + public const int LAYER_LAYER15 = 15; + public const int LAYER_LAYER16 = 16; + public const int LAYER_LAYER17 = 17; + public const string TAG_UNTAGGED = "Untagged"; + public const string TAG_RESPAWN = "Respawn"; + public const string TAG_FINISH = "Finish"; + public const string TAG_EDITORONLY= "EditorOnly"; + public const string TAG_MAINCAMERA= "MainCamera"; + public const string TAG_PLAYER = "Player"; + public const string TAG_GAMECONTROLLER = "GameController"; +} diff --git a/Assets/Main/Script/Runtime/HotUpdate/GeneratedConst.cs.meta b/Assets/Main/Script/Runtime/HotUpdate/GeneratedConst.cs.meta new file mode 100644 index 0000000..8e60273 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/GeneratedConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 121e5154d8bb6ac49a32eeeadeba3e45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/HotUpdate/MainDomain.cs b/Assets/Main/Script/Runtime/HotUpdate/MainDomain.cs new file mode 100644 index 0000000..753f30e --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/MainDomain.cs @@ -0,0 +1,61 @@ +using System.Threading.Tasks; +using Stary.Evo; +using Stary.Evo.UIFarme; +using UnityEngine; +namespace Main +{ + public class MainDomain :DomainBase,IController + { + + public override void OnEnter(string param) + { + base.OnEnter(param); + Debug.Log("UnityEvo: OnEnter进入成功"); + } + + public override void OnExit() + { + base.OnExit(); + GetArchitecture().Dispose(); + Debug.Log("UnityEvo: OnExit退出成功"); + } + + public override Task OnEnterAsync(string param) + { + Debug.Log("UnityEvo: OnEnterAsync进入成功"); + this.GetSystem().CreatZone(this.transform); + this.GetSystem().LoadKKController(this.transform); + return base.OnEnterAsync(param); + } + + public override Task OnExitAsync() + { + Debug.Log("UnityEvo: OnEnterAsync退出成功"); + return base.OnExitAsync(); + } + + public void OnDestroy() + { + GetArchitecture().Dispose(); + } + public IArchitecture GetArchitecture() + { + return MainArchitecture.Interface; + } + } + + + public class MainArchitecture : Architecture + { + protected override void Init() + { + //注册示例 + //RegisterSystem(new ScoreSystem()); + RegisterData(new ZoneGatherData()); + RegisterSystem(new ZoneSystem()); + RegisterSystem(new DigitalHuman()); + RegisterSystem(new VideoSystem()); + RegisterSystem(new PanelSystem()); + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/MainDomain.cs.meta b/Assets/Main/Script/Runtime/HotUpdate/MainDomain.cs.meta new file mode 100644 index 0000000..d9e9478 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/MainDomain.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b21927e111c22c4b93513b595e9f4a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/HotUpdate/PointController.cs b/Assets/Main/Script/Runtime/HotUpdate/PointController.cs new file mode 100644 index 0000000..776b236 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/PointController.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using Main; +using Stary.Evo; +using UnityEngine; +using YooAsset; + +namespace Main +{ + public class PointController : MonoBehaviour, IController + { + public ZoneController ZoneController; + private SphereCollider sphereCollider; + + private IUnRegister _onTriggerEnterUnRegister; + private IUnRegister _onTriggerExitUnRegister; + + public void Init(ZoneController ZoneController, PointData pointData) + { + this.ZoneController = ZoneController; + name = pointData.name; + //根据数据设置zone 碰撞盒 + transform.localPosition = pointData.position; + transform.localRotation = Quaternion.Euler(pointData.rotation); + transform.localScale = pointData.scale; + sphereCollider = this.transform.GetOrAddComponent(); + + _onTriggerEnterUnRegister = this.OnTriggerEnterEvent(OnPointTriggerEnterEvent); + _onTriggerExitUnRegister = this.OnTriggerExitEvent(OnPointriggerExitEvent); + this.gameObject.SetActive(false); + } + + public void OnPointTriggerEnterEvent(Collider collider) + { + if (collider.gameObject.CompareTag("MainCamera")) + { + // ZoneController.OpenPoint(this); + Debug.Log("OnPointTriggerEnterEvent"); + } + } + + public void OnPointriggerExitEvent(Collider collider) + { + if (collider.gameObject.CompareTag("MainCamera")) + { + // ZoneController.OpenPoint(this); + Debug.Log("OnPointTriggerEnterEvent"); + } + } + + public IArchitecture GetArchitecture() + { + return MainArchitecture.Interface; + } + } + + public class ZoneColliderEntity + { + public string Name { get; set; } + public BoxCollider ZoneCollider { get; set; } + + public Func EntorComplete { get; set; } + + public Func ExitComplete { get; set; } + public PointColliderEntity[] PointColliderEntities { get; set; } + } + + public class PointColliderEntity + { + public string Name { get; set; } + public bool IsTrigger { get; set; } + public SphereCollider PointCollider { get; set; } + + public Func EntorComplete { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/PointController.cs.meta b/Assets/Main/Script/Runtime/HotUpdate/PointController.cs.meta new file mode 100644 index 0000000..85aaac5 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/PointController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1d999e82fdea4ce287a59f805605e760 +timeCreated: 1744884916 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/Res.cs b/Assets/Main/Script/Runtime/HotUpdate/Res.cs new file mode 100644 index 0000000..cb528f2 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/Res.cs @@ -0,0 +1,136 @@ +namespace R +{ + public class Res + { + public class Main + { + public static class anim + { + public const string vid_maskani_anim = "Anim_vid_maskAni"; + public const string vid_maskcontroller_controller = "Anim_vid_maskController"; + public const string vid_maskdefault_anim = "Anim_vid_maskDefault"; + } + public static class audios + { + public const string au_x_07_ending1_wav = "Audios_au_X_07_ending1"; + public const string au_x_07_ending2_wav = "Audios_au_X_07_ending2"; + public const string au_x_07_ending3_wav = "Audios_au_X_07_ending3"; + public const string au_x_07_ending4_wav = "Audios_au_X_07_ending4"; + } + public static class config + { + public const string domainconfig_asset = "Config_DomainConfig"; + } + public static class dll + { + public static class android + { + public const string com_stary_evo_runtime_dll_bytes = "Android_com.stary.evo.runtime.dll"; + public const string dotween_dll_bytes = "Android_DOTween.dll"; + public const string informationsave_runtime_dll_bytes = "Android_InformationSave.RunTime.dll"; + public const string mscorlib_dll_bytes = "Android_mscorlib.dll"; + public const string system_core_dll_bytes = "Android_System.Core.dll"; + public const string uifarme_runtime_dll_bytes = "Android_UIFarme.RunTime.dll"; + public const string unitask_dll_bytes = "Android_UniTask.dll"; + public const string unityengine_coremodule_dll_bytes = "Android_UnityEngine.CoreModule.dll"; + public const string yooasset_dll_bytes = "Android_YooAsset.dll"; + } + } + public static class prefabs + { + public const string guideball_point_prefab = "Prefabs_GuideBall_Point"; + public const string guideball_zone_prefab = "Prefabs_GuideBall_Zone"; + public const string kkcontroller_prefab = "Prefabs_KKController"; + public const string main_prefab = "Prefabs_Main"; + public const string videopanel_prefab = "Prefabs_VideoPanel"; + public const string watermark_prefab = "Prefabs_Watermark"; + } + public static class scenes + { + } + public static class spriteatlas + { + public const string video_spriteatlas = ""; + public const string vid_video_mask_spriteatlas = ""; + } + public static class sprites + { + public const string ui_video_kepu_png = "Sprites_ui_video_kepu"; + public const string ui_x_07_ending1_png = "Sprites_ui_X_07_ending1"; + public const string ui_x_07_ending2_png = "Sprites_ui_X_07_ending2"; + public const string ui_x_07_ending3_png = "Sprites_ui_X_07_ending3"; + public const string ui_zone1_shengmingjiankangqu_png = "Sprites_ui_zone1_shengmingjiankangqu"; + public const string ui_zone2_jiankangyingxiangyinsuqu_png = "Sprites_ui_zone2_jiankangyingxiangyinsuqu"; + public const string ui_zone3_shengmingfanghuqu_png = "Sprites_ui_zone3_shengmingfanghuqu"; + public const string ui_zone4_jiankangsuyangqu_png = "Sprites_ui_zone4_jiankangsuyangqu"; + public const string ui_zone5_jiankangshenghuofangshiqu_png = "Sprites_ui_zone5_jiankangshenghuofangshiqu"; + public static class video + { + } + public static class vid_video_mask + { + public const string vid_mask_001_png = "vid_video_mask_vid_mask_001"; + public const string vid_mask_002_png = "vid_video_mask_vid_mask_002"; + public const string vid_mask_003_png = "vid_video_mask_vid_mask_003"; + public const string vid_mask_004_png = "vid_video_mask_vid_mask_004"; + public const string vid_mask_005_png = "vid_video_mask_vid_mask_005"; + public const string vid_mask_006_png = "vid_video_mask_vid_mask_006"; + public const string vid_mask_007_png = "vid_video_mask_vid_mask_007"; + public const string vid_mask_008_png = "vid_video_mask_vid_mask_008"; + public const string vid_mask_009_png = "vid_video_mask_vid_mask_009"; + public const string vid_mask_010_png = "vid_video_mask_vid_mask_010"; + public const string vid_mask_011_png = "vid_video_mask_vid_mask_011"; + public const string vid_mask_012_png = "vid_video_mask_vid_mask_012"; + public const string vid_mask_013_png = "vid_video_mask_vid_mask_013"; + public const string vid_mask_014_png = "vid_video_mask_vid_mask_014"; + public const string vid_mask_015_png = "vid_video_mask_vid_mask_015"; + public const string vid_mask_016_png = "vid_video_mask_vid_mask_016"; + public const string vid_mask_017_png = "vid_video_mask_vid_mask_017"; + public const string vid_mask_018_png = "vid_video_mask_vid_mask_018"; + public const string vid_mask_019_png = "vid_video_mask_vid_mask_019"; + public const string vid_mask_020_png = "vid_video_mask_vid_mask_020"; + public const string vid_mask_021_png = "vid_video_mask_vid_mask_021"; + public const string vid_mask_022_png = "vid_video_mask_vid_mask_022"; + public const string vid_mask_023_png = "vid_video_mask_vid_mask_023"; + public const string vid_mask_024_png = "vid_video_mask_vid_mask_024"; + public const string vid_mask_025_png = "vid_video_mask_vid_mask_025"; + public const string vid_mask_026_png = "vid_video_mask_vid_mask_026"; + public const string vid_mask_027_png = "vid_video_mask_vid_mask_027"; + public const string vid_mask_028_png = "vid_video_mask_vid_mask_028"; + public const string vid_mask_029_png = "vid_video_mask_vid_mask_029"; + public const string vid_mask_030_png = "vid_video_mask_vid_mask_030"; + public const string vid_mask_031_png = "vid_video_mask_vid_mask_031"; + public const string vid_mask_032_png = "vid_video_mask_vid_mask_032"; + public const string vid_mask_033_png = "vid_video_mask_vid_mask_033"; + public const string vid_mask_034_png = "vid_video_mask_vid_mask_034"; + public const string vid_mask_035_png = "vid_video_mask_vid_mask_035"; + public const string vid_mask_036_png = "vid_video_mask_vid_mask_036"; + public const string vid_mask_037_png = "vid_video_mask_vid_mask_037"; + public const string vid_mask_038_png = "vid_video_mask_vid_mask_038"; + public const string vid_mask_039_png = "vid_video_mask_vid_mask_039"; + public const string vid_mask_040_png = "vid_video_mask_vid_mask_040"; + public const string vid_mask_041_png = "vid_video_mask_vid_mask_041"; + public const string vid_mask_042_png = "vid_video_mask_vid_mask_042"; + public const string vid_mask_043_png = "vid_video_mask_vid_mask_043"; + public const string vid_mask_044_png = "vid_video_mask_vid_mask_044"; + public const string vid_mask_045_png = "vid_video_mask_vid_mask_045"; + public const string vid_mask_046_png = "vid_video_mask_vid_mask_046"; + public const string vid_mask_047_png = "vid_video_mask_vid_mask_047"; + public const string vid_mask_048_png = "vid_video_mask_vid_mask_048"; + public const string vid_mask_049_png = "vid_video_mask_vid_mask_049"; + public const string vid_mask_050_png = "vid_video_mask_vid_mask_050"; + public const string vid_mask_051_png = "vid_video_mask_vid_mask_051"; + public const string vid_mask_052_png = "vid_video_mask_vid_mask_052"; + public const string vid_mask_053_png = "vid_video_mask_vid_mask_053"; + public const string vid_mask_054_png = "vid_video_mask_vid_mask_054"; + public const string vid_mask_055_png = "vid_video_mask_vid_mask_055"; + public const string vid_mask_056_png = "vid_video_mask_vid_mask_056"; + public const string vid_mask_057_png = "vid_video_mask_vid_mask_057"; + public const string vid_mask_058_png = "vid_video_mask_vid_mask_058"; + public const string vid_mask_059_png = "vid_video_mask_vid_mask_059"; + public const string vid_mask_060_png = "vid_video_mask_vid_mask_060"; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/Res.cs.meta b/Assets/Main/Script/Runtime/HotUpdate/Res.cs.meta new file mode 100644 index 0000000..73a849b --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/Res.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c2846e6784c72e4186e83c127058adb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs b/Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs new file mode 100644 index 0000000..6aed91b --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs @@ -0,0 +1,124 @@ +using System; +using Stary.Evo; +using UnityEngine; +using UnityEngine.UI; +using YooAsset; + +namespace Main +{ + public class ZoneController : MonoBehaviour, IController + { + public ZoneType zoneType; + public BoxCollider ZoneCollider { get; set; } + public PointController[] PointControllerEntities { get; set; } + + private IUnRegister _onTriggerEnterUnRegister; + + private Image _image; + public async void Init(ZoneData zoneData) + { + + name = zoneData.name; + zoneType = Enum.Parse(name); + _image=transform.Find("Canvas/Image").GetComponent(); + //根据数据设置zone 碰撞盒 + transform.localPosition = zoneData.position; + transform.localRotation = Quaternion.Euler(zoneData.rotation); + transform.localScale = zoneData.scale; + ZoneCollider = this.transform.GetOrAddComponent(); + + _onTriggerEnterUnRegister = this.OnTriggerEnterEvent(OnZoneTriggerEnterEvent); + + PointControllerEntities = new PointController[zoneData.pointDatas.Count]; + + var package = YooAssets.TryGetPackage("Main"); + + var spriteHandle = package.LoadAssetAsync($"Sprites_{zoneData.spriteName}" ); + await spriteHandle.Task; + _image.sprite = spriteHandle.GetAssetObject(); + _image.SetNativeSize(); + + var pointHandle = package.LoadAssetAsync(R.Res.Main.prefabs.guideball_point_prefab); + await pointHandle.Task; + for (int i = 0; i < zoneData.pointDatas.Count; i++) + { + + PointData currentPointData = zoneData.pointDatas[i]; + var pointGo = pointHandle.InstantiateSync(this.transform); + PointController pointController = pointGo.GetOrAddComponent(); + PointControllerEntities[i] = pointController; + pointController.Init(this, currentPointData); + + + this.GetSystem().AddPointData(new DigitalHumanPointData() + { + Name = zoneData.pointDatas[i].name, + pointTransform = pointGo.transform + }); + } + // this.RegisterEvent(zoneType, OpenPoint); + } + + + public void OnZoneTriggerEnterEvent(Collider collider) + { + Debug.Log("OnZoneTriggerEnterEvent"); + if (collider.gameObject.CompareTag("MainCamera")) + { + _onTriggerEnterUnRegister.UnRegister(); + OpenPoint(); + this.GetSystem().OpenCurrentZone(this); + } + } + + public void OpenPoint() + { + foreach (var controller in PointControllerEntities) + { + controller.gameObject.SetActive(true); + } + } + + public void OpenPoint(PointController controller) + { + foreach (var controllerEntity in PointControllerEntities) + { + if (controllerEntity == controller) + { + controller.gameObject.SetActive(true); + } + else + { + controllerEntity.gameObject.SetActive(false); + } + + } + } + + public void ColsePoint() + { + foreach (var controller in PointControllerEntities) + { + controller.gameObject.SetActive(false); + } + } + + public void OnZoneTriggerExitEvent(Collider collider) + { + } + + public void OnPointTriggerEnterEvent(Collider collider) + { + } + + public void OnPointTriggerExitEvent(Collider collider) + { + } + + public IArchitecture GetArchitecture() + { + return MainArchitecture.Interface; + } + } + +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs.meta b/Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs.meta new file mode 100644 index 0000000..7045356 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/ZoneController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5f2837f45bfd4347b76957e11fd63f6b +timeCreated: 1744876130 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/ZoneGatherData.cs b/Assets/Main/Script/Runtime/HotUpdate/ZoneGatherData.cs new file mode 100644 index 0000000..df219b9 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/ZoneGatherData.cs @@ -0,0 +1,160 @@ +using System.Collections; +using System.Collections.Generic; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + public interface IZoneData : IData + { + ZoneData[] GetZoneDataAll(); + ZoneData GetZoneData(int id); + ZoneData GetZoneData(string domain); + PointData GetPointData(int zoneId, int pointId); + PointData GetPointData(string zoneDomain, string pointDomain); + } + + + public class ZoneGatherData : AbstractData, IZoneData + { + private PointGatherData _pointGatherData; + + protected override void OnInit() + { + _pointGatherData = Resources.Load("PointGatherData"); + } + + /// + /// 通过id获取区域数据 + /// + /// + /// + public ZoneData[] GetZoneDataAll() + { + if (_pointGatherData != null) + { + for (int i = 0; i < _pointGatherData.ZoneDatas.Count; i++) + { + + return _pointGatherData.ZoneDatas.ToArray(); + + } + + Debug.LogWarning($"UnityEvo:PointGatherData is null"); + } + else + { + Debug.LogError("UnityEvo:PointGatherData is null"); + } + + return default; + } + + /// + /// 通过id获取区域数据 + /// + /// + /// + public ZoneData GetZoneData(int id) + { + if (_pointGatherData != null) + { + for (int i = 0; i < _pointGatherData.ZoneDatas.Count; i++) + { + if (_pointGatherData.ZoneDatas[i].id == id) + { + return _pointGatherData.ZoneDatas[i]; + } + } + + Debug.LogWarning($"UnityEvo:{id}在PointGatherData is null"); + } + else + { + Debug.LogError("UnityEvo:PointGatherData is null"); + } + + return default; + } + + /// + /// 通过id获取区域数据 + /// + /// + /// + public ZoneData GetZoneData(string domain) + { + if (_pointGatherData != null) + { + for (int i = 0; i < _pointGatherData.ZoneDatas.Count; i++) + { + if (_pointGatherData.ZoneDatas[i].name == domain) + { + return _pointGatherData.ZoneDatas[i]; + } + } + + Debug.LogWarning($"UnityEvo:{domain}在PointGatherData is null"); + } + else + { + Debug.LogError("UnityEvo:PointGatherData is null"); + } + + return default; + } + + public PointData GetPointData(int zoneId, int pointId) + { + ZoneData zoneData = GetZoneData(zoneId); + if (zoneData.pointDatas != null) + { + for (int i = 0; i < zoneData.pointDatas.Count; i++) + { + if (zoneData.pointDatas[i].id == pointId) + { + return zoneData.pointDatas[i]; + } + } + + Debug.LogWarning($"UnityEvo:{pointId}在PointGatherData.zoneData.pointDatas is null"); + } + else + { + Debug.LogError("UnityEvo:PointGatherData.zoneData.pointDatas is null"); + } + + return default; + } + + public PointData GetPointData(string zoneDomain, string pointDomain) + { + ZoneData zoneData = GetZoneData(zoneDomain); + if (zoneData.pointDatas != null) + { + for (int i = 0; i < zoneData.pointDatas.Count; i++) + { + if (zoneData.pointDatas[i].name == pointDomain) + { + return zoneData.pointDatas[i]; + } + } + + Debug.LogWarning($"UnityEvo:{pointDomain}在PointGatherData.zoneData.pointDatas is null"); + } + else + { + Debug.LogError("UnityEvo:PointGatherData.zoneData.pointDatas is null"); + } + + return default; + } + + public override void Dispose() + { + + } + + + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/ZoneGatherData.cs.meta b/Assets/Main/Script/Runtime/HotUpdate/ZoneGatherData.cs.meta new file mode 100644 index 0000000..dbf6ad8 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/ZoneGatherData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23cb528afab304d429cd1873c3ec2281 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/HotUpdate/ZoneSystem.cs b/Assets/Main/Script/Runtime/HotUpdate/ZoneSystem.cs new file mode 100644 index 0000000..0f27ef1 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/ZoneSystem.cs @@ -0,0 +1,59 @@ +using System.Collections; +using System.Collections.Generic; +using Stary.Evo; +using UnityEngine; +using YooAsset; + +namespace Main +{ + public interface IZoneSystem : ISystem + { + void CreatZone(Transform parent); + void OpenCurrentZone(ZoneController CurrentController); + } + + public class ZoneSystem : AbstractSystem, IZoneSystem + { + private ZoneController[] zoneControllers; + + protected override void OnInit() + { + + } + + /// + /// 创建zone碰撞盒 + /// + public async void CreatZone(Transform parent) + { + var package = YooAssets.TryGetPackage("Main"); + var pointHandle = package.LoadAssetAsync(R.Res.Main.prefabs.guideball_zone_prefab); + await pointHandle.Task; + var zoneDatas = this.GetData().GetZoneDataAll(); + zoneControllers = new ZoneController[zoneDatas.Length]; + for (int i = 0; i < zoneDatas.Length; i++) + { + var zoneGo = pointHandle.InstantiateSync(parent); + ZoneController pointController = zoneGo.GetOrAddComponent(); + zoneControllers[i] = pointController; + pointController.Init(zoneDatas[i]); + } + } + + public void OpenCurrentZone(ZoneController CurrentController) + { + foreach (var controller in zoneControllers) + { + if (controller != CurrentController) + { + controller.ColsePoint(); + } + } + } + + public override void Dispose() + { + + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HotUpdate/ZoneSystem.cs.meta b/Assets/Main/Script/Runtime/HotUpdate/ZoneSystem.cs.meta new file mode 100644 index 0000000..a9ecb85 --- /dev/null +++ b/Assets/Main/Script/Runtime/HotUpdate/ZoneSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0daf3dc0256eff458e570c61418625b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/HybridCLRGenerate.meta b/Assets/Main/Script/Runtime/HybridCLRGenerate.meta new file mode 100644 index 0000000..ba6fac8 --- /dev/null +++ b/Assets/Main/Script/Runtime/HybridCLRGenerate.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3196c042bce6e4f41b144335b4bfd000 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/HybridCLRGenerate/AOTGenericReferences.cs b/Assets/Main/Script/Runtime/HybridCLRGenerate/AOTGenericReferences.cs new file mode 100644 index 0000000..9bb79f8 --- /dev/null +++ b/Assets/Main/Script/Runtime/HybridCLRGenerate/AOTGenericReferences.cs @@ -0,0 +1,587 @@ +using System.Collections.Generic; +public class AOTGenericReferences : UnityEngine.MonoBehaviour +{ + + // {{ AOT assemblies + public static readonly IReadOnlyList PatchedAOTAssemblyList = new List + { + "DOTween.dll", + "InformationSave.RunTime.dll", + "UIFarme.RunTime.dll", + "UniTask.dll", + "UnityEngine.CoreModule.dll", + "YooAsset.dll", + "com.stary.evo.runtime.dll", + "mscorlib.dll", + }; + // }} + + // {{ constraint implement type + // }} + + // {{ AOT generic types + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask.<>cd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskd__2> + // Cysharp.Threading.Tasks.ITaskPoolNode + // Cysharp.Threading.Tasks.IUniTaskSource + // Cysharp.Threading.Tasks.IUniTaskSource> + // Cysharp.Threading.Tasks.IUniTaskSource>> + // Cysharp.Threading.Tasks.IUniTaskSource>>> + // Cysharp.Threading.Tasks.IUniTaskSource>>>> + // Cysharp.Threading.Tasks.IUniTaskSource>>>>> + // Cysharp.Threading.Tasks.IUniTaskSource>>>>>> + // Cysharp.Threading.Tasks.IUniTaskSource>>>>>>> + // Cysharp.Threading.Tasks.IUniTaskSource>>>>>>>> + // Cysharp.Threading.Tasks.IUniTaskSource>>>>>>>>> + // Cysharp.Threading.Tasks.TaskPool + // Cysharp.Threading.Tasks.UniTask.Awaiter + // Cysharp.Threading.Tasks.UniTask.Awaiter> + // Cysharp.Threading.Tasks.UniTask.Awaiter>> + // Cysharp.Threading.Tasks.UniTask.Awaiter>>> + // Cysharp.Threading.Tasks.UniTask.Awaiter>>>> + // Cysharp.Threading.Tasks.UniTask.Awaiter>>>>> + // Cysharp.Threading.Tasks.UniTask.Awaiter>>>>>> + // Cysharp.Threading.Tasks.UniTask.Awaiter>>>>>>> + // Cysharp.Threading.Tasks.UniTask.Awaiter>>>>>>>> + // Cysharp.Threading.Tasks.UniTask.Awaiter>>>>>>>>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>>>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>>>>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>>>>>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>>>>>>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>>>>>>>> + // Cysharp.Threading.Tasks.UniTask.IsCanceledSource>>>>>>>>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource + // Cysharp.Threading.Tasks.UniTask.MemoizeSource> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>>>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>>>>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>>>>>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>>>>>>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>>>>>>>> + // Cysharp.Threading.Tasks.UniTask.MemoizeSource>>>>>>>>> + // Cysharp.Threading.Tasks.UniTask + // Cysharp.Threading.Tasks.UniTask> + // Cysharp.Threading.Tasks.UniTask>> + // Cysharp.Threading.Tasks.UniTask>>> + // Cysharp.Threading.Tasks.UniTask>>>> + // Cysharp.Threading.Tasks.UniTask>>>>> + // Cysharp.Threading.Tasks.UniTask>>>>>> + // Cysharp.Threading.Tasks.UniTask>>>>>>> + // Cysharp.Threading.Tasks.UniTask>>>>>>>> + // Cysharp.Threading.Tasks.UniTask>>>>>>>>> + // Cysharp.Threading.Tasks.UniTask>>>>>>>>>> + // Cysharp.Threading.Tasks.UniTaskCompletionSourceCore + // DG.Tweening.Core.DOGetter + // DG.Tweening.Core.DOSetter + // Stary.Evo.Architecture.<>c + // Stary.Evo.Architecture + // Stary.Evo.InformationSave.AbstractInformation.<>c__DisplayClass5_0 + // Stary.Evo.InformationSave.AbstractInformation.<>c__DisplayClass7_0 + // Stary.Evo.InformationSave.AbstractInformation + // System.Action + // System.Action + // System.Collections.Generic.ArraySortHelper + // System.Collections.Generic.Comparer + // System.Collections.Generic.Comparer> + // System.Collections.Generic.Comparer>> + // System.Collections.Generic.Comparer>>> + // System.Collections.Generic.Comparer>>>> + // System.Collections.Generic.Comparer>>>>> + // System.Collections.Generic.Comparer>>>>>> + // System.Collections.Generic.Comparer>>>>>>> + // System.Collections.Generic.Comparer>>>>>>>> + // System.Collections.Generic.Comparer + // System.Collections.Generic.Comparer + // System.Collections.Generic.Dictionary.Enumerator + // System.Collections.Generic.Dictionary.KeyCollection.Enumerator + // System.Collections.Generic.Dictionary.KeyCollection + // System.Collections.Generic.Dictionary.ValueCollection.Enumerator + // System.Collections.Generic.Dictionary.ValueCollection + // System.Collections.Generic.Dictionary + // System.Collections.Generic.EqualityComparer + // System.Collections.Generic.EqualityComparer> + // System.Collections.Generic.EqualityComparer>> + // System.Collections.Generic.EqualityComparer>>> + // System.Collections.Generic.EqualityComparer>>>> + // System.Collections.Generic.EqualityComparer>>>>> + // System.Collections.Generic.EqualityComparer>>>>>> + // System.Collections.Generic.EqualityComparer>>>>>>> + // System.Collections.Generic.EqualityComparer>>>>>>>> + // System.Collections.Generic.EqualityComparer + // System.Collections.Generic.EqualityComparer + // System.Collections.Generic.ICollection + // System.Collections.Generic.IComparer + // System.Collections.Generic.IEnumerable> + // System.Collections.Generic.IEnumerable + // System.Collections.Generic.IEnumerator + // System.Collections.Generic.IEqualityComparer + // System.Collections.Generic.IList + // System.Collections.Generic.KeyValuePair + // System.Collections.Generic.List.Enumerator + // System.Collections.Generic.List + // System.Collections.Generic.ObjectComparer + // System.Collections.Generic.ObjectComparer> + // System.Collections.Generic.ObjectComparer>> + // System.Collections.Generic.ObjectComparer>>> + // System.Collections.Generic.ObjectComparer>>>> + // System.Collections.Generic.ObjectComparer>>>>> + // System.Collections.Generic.ObjectComparer>>>>>> + // System.Collections.Generic.ObjectComparer>>>>>>> + // System.Collections.Generic.ObjectComparer + // System.Collections.Generic.ObjectComparer + // System.Collections.Generic.ObjectEqualityComparer + // System.Collections.Generic.ObjectEqualityComparer> + // System.Collections.Generic.ObjectEqualityComparer>> + // System.Collections.Generic.ObjectEqualityComparer>>> + // System.Collections.Generic.ObjectEqualityComparer>>>> + // System.Collections.Generic.ObjectEqualityComparer>>>>> + // System.Collections.Generic.ObjectEqualityComparer>>>>>> + // System.Collections.Generic.ObjectEqualityComparer>>>>>>> + // System.Collections.Generic.ObjectEqualityComparer + // System.Collections.Generic.ObjectEqualityComparer + // System.Collections.Generic.Queue.Enumerator + // System.Collections.Generic.Queue + // System.Collections.ObjectModel.ReadOnlyCollection + // System.Comparison + // System.Func + // System.Func + // System.Func> + // System.Func>> + // System.Func>>> + // System.Func>>>> + // System.Func>>>>> + // System.Func>>>>>> + // System.Func>>>>>>> + // System.Func + // System.Func + // System.Func + // System.Func> + // System.Func>> + // System.Func>>> + // System.Func>>>> + // System.Func>>>>> + // System.Func>>>>>> + // System.Func>>>>>>> + // System.Func + // System.Predicate + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder> + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder>> + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder>>> + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder>>>> + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder>>>>> + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder>>>>>> + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder>>>>>>> + // System.Runtime.CompilerServices.AsyncTaskMethodBuilder>>>>>>>> + // System.Runtime.CompilerServices.ConditionalWeakTable.CreateValueCallback + // System.Runtime.CompilerServices.ConditionalWeakTable.Enumerator + // System.Runtime.CompilerServices.ConditionalWeakTable + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter>>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter>>>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter>>>>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable>>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable>>>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable>>>>>> + // System.Runtime.CompilerServices.ConfiguredTaskAwaitable>>>>>>> + // System.Runtime.CompilerServices.TaskAwaiter + // System.Runtime.CompilerServices.TaskAwaiter + // System.Runtime.CompilerServices.TaskAwaiter> + // System.Runtime.CompilerServices.TaskAwaiter>> + // System.Runtime.CompilerServices.TaskAwaiter>>> + // System.Runtime.CompilerServices.TaskAwaiter>>>> + // System.Runtime.CompilerServices.TaskAwaiter>>>>> + // System.Runtime.CompilerServices.TaskAwaiter>>>>>> + // System.Runtime.CompilerServices.TaskAwaiter>>>>>>> + // System.Runtime.CompilerServices.ValueTaskAwaiter + // System.Runtime.CompilerServices.ValueTaskAwaiter> + // System.Runtime.CompilerServices.ValueTaskAwaiter>> + // System.Runtime.CompilerServices.ValueTaskAwaiter>>> + // System.Runtime.CompilerServices.ValueTaskAwaiter>>>> + // System.Runtime.CompilerServices.ValueTaskAwaiter>>>>> + // System.Runtime.CompilerServices.ValueTaskAwaiter>>>>>> + // System.Runtime.CompilerServices.ValueTaskAwaiter>>>>>>> + // System.Runtime.CompilerServices.ValueTaskAwaiter>>>>>>>> + // System.Threading.Tasks.ContinuationTaskFromResultTask + // System.Threading.Tasks.ContinuationTaskFromResultTask + // System.Threading.Tasks.ContinuationTaskFromResultTask> + // System.Threading.Tasks.ContinuationTaskFromResultTask>> + // System.Threading.Tasks.ContinuationTaskFromResultTask>>> + // System.Threading.Tasks.ContinuationTaskFromResultTask>>>> + // System.Threading.Tasks.ContinuationTaskFromResultTask>>>>> + // System.Threading.Tasks.ContinuationTaskFromResultTask>>>>>> + // System.Threading.Tasks.ContinuationTaskFromResultTask>>>>>>> + // System.Threading.Tasks.Sources.IValueTaskSource + // System.Threading.Tasks.Sources.IValueTaskSource> + // System.Threading.Tasks.Sources.IValueTaskSource>> + // System.Threading.Tasks.Sources.IValueTaskSource>>> + // System.Threading.Tasks.Sources.IValueTaskSource>>>> + // System.Threading.Tasks.Sources.IValueTaskSource>>>>> + // System.Threading.Tasks.Sources.IValueTaskSource>>>>>> + // System.Threading.Tasks.Sources.IValueTaskSource>>>>>>> + // System.Threading.Tasks.Sources.IValueTaskSource>>>>>>>> + // System.Threading.Tasks.Task + // System.Threading.Tasks.Task + // System.Threading.Tasks.Task> + // System.Threading.Tasks.Task>> + // System.Threading.Tasks.Task>>> + // System.Threading.Tasks.Task>>>> + // System.Threading.Tasks.Task>>>>> + // System.Threading.Tasks.Task>>>>>> + // System.Threading.Tasks.Task>>>>>>> + // System.Threading.Tasks.Task>>>>>>>> + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0 + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0 + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0> + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0>> + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0>>> + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0>>>> + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0>>>>> + // System.Threading.Tasks.TaskFactory.<>c__DisplayClass35_0>>>>>> + // System.Threading.Tasks.TaskFactory + // System.Threading.Tasks.TaskFactory + // System.Threading.Tasks.TaskFactory> + // System.Threading.Tasks.TaskFactory>> + // System.Threading.Tasks.TaskFactory>>> + // System.Threading.Tasks.TaskFactory>>>> + // System.Threading.Tasks.TaskFactory>>>>> + // System.Threading.Tasks.TaskFactory>>>>>> + // System.Threading.Tasks.TaskFactory>>>>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c>>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c>>>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c>>>>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask>>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask>>>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask>>>>>>> + // System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask>>>>>>>> + // System.Threading.Tasks.ValueTask + // System.Threading.Tasks.ValueTask> + // System.Threading.Tasks.ValueTask>> + // System.Threading.Tasks.ValueTask>>> + // System.Threading.Tasks.ValueTask>>>> + // System.Threading.Tasks.ValueTask>>>>> + // System.Threading.Tasks.ValueTask>>>>>> + // System.Threading.Tasks.ValueTask>>>>>>> + // System.Threading.Tasks.ValueTask>>>>>>>> + // System.Threading.Tasks.ValueTask>>>>>>>>> + // System.ValueTuple + // System.ValueTuple> + // System.ValueTuple>> + // System.ValueTuple>>> + // System.ValueTuple>>>> + // System.ValueTuple>>>>> + // System.ValueTuple>>>>>> + // System.ValueTuple>>>>>>> + // System.ValueTuple>>>>>>>> + // System.ValueTuple>>>>>>>>> + // }} + + public void RefMethods() + { + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.VideoTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.VideoTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.VideoTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_03.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_03.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_03.VideoTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_04.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_04.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_04.VideoTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_05.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_04_05.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_05_01.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_05_01.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_06_01.AudioTableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_06_01.UITableData.d__2&) + // System.Void Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder.Startd__2>(X_06_01.VideoTableData.d__2&) + // object DG.Tweening.TweenSettingsExtensions.OnComplete(object,DG.Tweening.TweenCallback) + // object DG.Tweening.TweenSettingsExtensions.SetEase(object,DG.Tweening.Ease) + // System.Void Stary.Evo.Architecture.RegisterData(object) + // System.Void Stary.Evo.Architecture.RegisterSystem(object) + // object Stary.Evo.CanGetDataExtension.GetData(Stary.Evo.ICanGetData) + // object Stary.Evo.CanGetSystemExtension.GetSystem(Stary.Evo.ICanGetSystem) + // Stary.Evo.IUnRegister Stary.Evo.CanRegisterEventExtension.RegisterEvent(Stary.Evo.ICanRegisterEvent,int,System.Action) + // object Stary.Evo.IArchitecture.GetData() + // object Stary.Evo.IArchitecture.GetSystem() + // Stary.Evo.IUnRegister Stary.Evo.IArchitecture.RegisterEvent(int,System.Action) + // System.Void Stary.Evo.IOCContainer.Register(object) + // System.Void Stary.Evo.UIFarme.IPanelSystem.PopQueue() + // System.Threading.Tasks.Task Stary.Evo.UIFarme.IPanelSystem.PushQueue(UnityEngine.Transform,string) + // System.Void Stary.Evo.UIFarme.IPanelSystem.SendPanelEvent(int,object,object) + // UnityEngine.Vector3 Stary.Evo.UnityEngineTransformExtension.Scale(object) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_03.X_04_03Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X_04_04Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_05.X_04_05Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_05_01.X_05_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_06_01.X_06_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.X_04_03Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X_04_04Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.X_04_05Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.X_05_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.X_06_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_03.X_04_03Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X_04_04Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_05.X_04_05Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_05_01.X_05_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_06_01.X_06_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.X_04_03Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X_04_04Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.X_04_05Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.X_05_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompletedd__2>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.X_06_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__2>(X_04_03.X_04_03Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__2>(X_04_04.X_04_04Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__2>(X_04_05.X_04_05Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__2>(X_05_01.X_05_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startd__2>(X_06_01.X_06_01Domain.d__2&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__3>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_02_01.BeginController.d__3&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__8>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_02_02.BeginController.d__8&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__7>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_02_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__5>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_02_02.BeginController.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_01_01.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__12>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_01_01.BeginController.d__12&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_01_01.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__5>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_01_01.BeginController.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_01_02.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__7>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_01_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__18>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_01.BeginController.d__18&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__13>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_01.BeginController.d__13&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__15>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_01.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_01.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__17>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_02.BeginController.d__17&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__12>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_02.BeginController.d__12&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__15>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_02.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_02.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__15>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_03.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_03.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__13>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_03.BeginController.d__13&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_03_02_03.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_01.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_01.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_01.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_02.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__7>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__6>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_02.BeginController.d__6&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__8>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_03.X0403Manager.d__8&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__18>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X0404Manager.d__18&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__17>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X0404Manager.d__17&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__20>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X0404Manager.d__20&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__21>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X0404Manager.d__21&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__22>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X0404Manager.d__22&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__26>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X0404Manager.d__26&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__19>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_04.X0404Manager.d__19&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__30>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_04_05.X0405Manager.d__30&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__33>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_05_01.X0501Manager.d__33&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__20>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_06_01.X0601Manager.d__20&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompleted,X_02_02.BeginController.d__7>(Cysharp.Threading.Tasks.UniTask.Awaiter&,X_02_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__3>(System.Runtime.CompilerServices.TaskAwaiter&,X_02_01.BeginController.d__3&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__8>(System.Runtime.CompilerServices.TaskAwaiter&,X_02_02.BeginController.d__8&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__7>(System.Runtime.CompilerServices.TaskAwaiter&,X_02_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__5>(System.Runtime.CompilerServices.TaskAwaiter&,X_02_02.BeginController.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_01_01.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_01_01.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__5>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_01_01.BeginController.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_01_02.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__7>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_01_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__18>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_01.BeginController.d__18&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__13>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_01.BeginController.d__13&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__15>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_01.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_01.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__17>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_02.BeginController.d__17&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__12>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_02.BeginController.d__12&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__15>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_02.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_02.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__15>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_03.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_03.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__13>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_03.BeginController.d__13&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(System.Runtime.CompilerServices.TaskAwaiter&,X_03_02_03.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_01.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_01.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_01.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_02.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_02.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__7>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__9>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.X0403Manager.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__8>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.X0403Manager.d__8&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__10>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.X0403Manager.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__11>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_03.X0403Manager.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__17>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X0404Manager.d__17&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__27>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X0404Manager.d__27&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__26>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X0404Manager.d__26&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__28>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X0404Manager.d__28&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__29>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X0404Manager.d__29&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__19>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_04.X0404Manager.d__19&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__30>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.X0405Manager.d__30&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__33>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.X0405Manager.d__33&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__31>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.X0405Manager.d__31&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__32>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.X0405Manager.d__32&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__14>(System.Runtime.CompilerServices.TaskAwaiter&,X_04_05.X0405Manager.d__14&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__36>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.X0501Manager.d__36&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__33>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.X0501Manager.d__33&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__37>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.X0501Manager.d__37&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__34>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.X0501Manager.d__34&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__35>(System.Runtime.CompilerServices.TaskAwaiter&,X_05_01.X0501Manager.d__35&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__21>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.X0601Manager.d__21&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__20>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.X0601Manager.d__20&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__22>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.X0601Manager.d__22&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompletedd__23>(System.Runtime.CompilerServices.TaskAwaiter&,X_06_01.X0601Manager.d__23&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__6>(X_02_01.BeginController.d__6&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__5>(X_02_01.BeginController.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__3>(X_02_01.BeginController.d__3&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__11>(X_02_02.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__8>(X_02_02.BeginController.d__8&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__10>(X_02_02.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__7>(X_02_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__5>(X_02_02.BeginController.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__14>(X_03_01_01.BeginController.d__14&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__10>(X_03_01_01.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__12>(X_03_01_01.BeginController.d__12&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__9>(X_03_01_01.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__5>(X_03_01_01.BeginController.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__9>(X_03_01_02.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__11>(X_03_01_02.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__7>(X_03_01_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__19>(X_03_02_01.BeginController.d__19&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__18>(X_03_02_01.BeginController.d__18&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__13>(X_03_02_01.BeginController.d__13&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__15>(X_03_02_01.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__11>(X_03_02_01.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__14>(X_03_02_01.BeginController.d__14&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__5>(X_03_02_01.X_03_02_01Domain.d__5&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__18>(X_03_02_02.BeginController.d__18&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__17>(X_03_02_02.BeginController.d__17&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__12>(X_03_02_02.BeginController.d__12&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__15>(X_03_02_02.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__10>(X_03_02_02.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__14>(X_03_02_02.BeginController.d__14&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__17>(X_03_02_03.BeginController.d__17&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__15>(X_03_02_03.BeginController.d__15&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__11>(X_03_02_03.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__13>(X_03_02_03.BeginController.d__13&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__9>(X_03_02_03.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__12>(X_03_02_03.BeginController.d__12&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__11>(X_04_01.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__12>(X_04_01.BeginController.d__12&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__10>(X_04_01.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__9>(X_04_01.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__10>(X_04_02.BeginController.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__9>(X_04_02.BeginController.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__11>(X_04_02.BeginController.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__7>(X_04_02.BeginController.d__7&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__6>(X_04_02.BeginController.d__6&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_03.AudioTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_03.UITableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_03.VideoTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__9>(X_04_03.X0403Manager.d__9&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__8>(X_04_03.X0403Manager.d__8&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__10>(X_04_03.X0403Manager.d__10&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__11>(X_04_03.X0403Manager.d__11&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_04.AudioTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_04.UITableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_04.VideoTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__18>(X_04_04.X0404Manager.d__18&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__17>(X_04_04.X0404Manager.d__17&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__20>(X_04_04.X0404Manager.d__20&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__21>(X_04_04.X0404Manager.d__21&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__22>(X_04_04.X0404Manager.d__22&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__23>(X_04_04.X0404Manager.d__23&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__24>(X_04_04.X0404Manager.d__24&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__25>(X_04_04.X0404Manager.d__25&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__27>(X_04_04.X0404Manager.d__27&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__26>(X_04_04.X0404Manager.d__26&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__28>(X_04_04.X0404Manager.d__28&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__29>(X_04_04.X0404Manager.d__29&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__19>(X_04_04.X0404Manager.d__19&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_05.AudioTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_04_05.UITableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__30>(X_04_05.X0405Manager.d__30&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__33>(X_04_05.X0405Manager.d__33&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__31>(X_04_05.X0405Manager.d__31&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__32>(X_04_05.X0405Manager.d__32&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__14>(X_04_05.X0405Manager.d__14&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_05_01.AudioTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_05_01.UITableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__36>(X_05_01.X0501Manager.d__36&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__33>(X_05_01.X0501Manager.d__33&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__37>(X_05_01.X0501Manager.d__37&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__34>(X_05_01.X0501Manager.d__34&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__35>(X_05_01.X0501Manager.d__35&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_06_01.AudioTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_06_01.UITableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__1>(X_06_01.VideoTableData.d__1&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__21>(X_06_01.X0601Manager.d__21&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__20>(X_06_01.X0601Manager.d__20&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__22>(X_06_01.X0601Manager.d__22&) + // System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Startd__23>(X_06_01.X0601Manager.d__23&) + // object UnityEngine.Component.GetComponent() + // object UnityEngine.Component.GetComponentInChildren() + // object UnityEngine.GameObject.GetComponent() + // object UnityEngine.GameObject.GetComponentInChildren() + // object UnityEngine.GameObject.GetComponentInChildren(bool) + // object UnityEngine.Object.Instantiate(object) + // object UnityEngine.Object.Instantiate(object,UnityEngine.Transform) + // object UnityEngine.Object.Instantiate(object,UnityEngine.Transform,bool) + // object YooAsset.AssetHandle.GetAssetObject() + // YooAsset.AssetHandle YooAsset.ResourcePackage.LoadAssetAsync(string,uint) + // YooAsset.AssetHandle YooAsset.YooAssets.LoadAssetAsync(string,uint) + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/HybridCLRGenerate/AOTGenericReferences.cs.meta b/Assets/Main/Script/Runtime/HybridCLRGenerate/AOTGenericReferences.cs.meta new file mode 100644 index 0000000..fb0b576 --- /dev/null +++ b/Assets/Main/Script/Runtime/HybridCLRGenerate/AOTGenericReferences.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: acdf537ad9760d34fa7985e30164028a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Init.meta b/Assets/Main/Script/Runtime/Init.meta new file mode 100644 index 0000000..da83659 --- /dev/null +++ b/Assets/Main/Script/Runtime/Init.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73f0ed03caf557d42ab55a0979f6c452 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Init/HybridClREntrance.cs b/Assets/Main/Script/Runtime/Init/HybridClREntrance.cs new file mode 100644 index 0000000..1c85705 --- /dev/null +++ b/Assets/Main/Script/Runtime/Init/HybridClREntrance.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using Sirenix.OdinInspector; +using Stary.Evo; +using UnityEngine; + +namespace Stary.Evo +{ + public class HybridClREntrance : MonoBehaviour + { + private FsmLoadSystem _fsmSystem; + public string domain; + + + private void Awake() + { + _fsmSystem = new FsmLoadSystem(); + // 初始化日志 + _fsmSystem.AddState(new ResStartState(_fsmSystem)); + _fsmSystem.AddState(new ResUpdateServerState(_fsmSystem)); + _fsmSystem.AddState(new ResUpdateLocalState(_fsmSystem)); + _fsmSystem.AddState(new HotFixState(_fsmSystem)); + _fsmSystem.AddState(new LoadResState(_fsmSystem)); + _fsmSystem.AddState(new LoadResMainState(_fsmSystem)); + } + + private void Start() + { +#if !UNITY_EDITOR + domain = "Main"; +#endif + _fsmSystem.SetOpenDomainType(OpenDomainType.DEFAULT); + AppConfig.ASSETPACKGENAME = domain; + _fsmSystem.SetCurState(nameof(ResStartState)); + } + + public void OpenDomain() + { + AppConfig.ASSETPACKGENAME = domain; + _fsmSystem.SetCurState(nameof(ResStartState)); + } + + public void OpenDomain(string domain, OpenDomainType openDomainType) + { + _fsmSystem.SetOpenDomainType(openDomainType); + AppConfig.ASSETPACKGENAME = domain; + _fsmSystem.SetCurState(nameof(ResStartState)); + } + + + public void CloseDomain() + { + _fsmSystem.SetCurState(nameof(DefaultState)); + } + + private void Update() + { + _fsmSystem.CurState.OnUpdate(); + } + } + + /// + /// 打开的项目类型 + /// DEFAULT:默认打开方式 + /// VIOICE:语音打开方式 + /// + public enum OpenDomainType + { + DEFAULT, + VIOICE + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Init/HybridClREntrance.cs.meta b/Assets/Main/Script/Runtime/Init/HybridClREntrance.cs.meta new file mode 100644 index 0000000..06722f6 --- /dev/null +++ b/Assets/Main/Script/Runtime/Init/HybridClREntrance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 467bc10b56c272043a89b12cbf23b3ef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/LasterDoMain.meta b/Assets/Main/Script/Runtime/LasterDoMain.meta new file mode 100644 index 0000000..4632a9e --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 40e68a50876f42e3ad8ecec2e4d36aa3 +timeCreated: 1745896633 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/AudioTableData.cs b/Assets/Main/Script/Runtime/LasterDoMain/AudioTableData.cs new file mode 100644 index 0000000..a2e7406 --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/AudioTableData.cs @@ -0,0 +1,184 @@ +using Cysharp.Threading.Tasks; +using Stary.Evo; +using UnityEngine; +using YooAsset; + +namespace Main +{ + public interface IAudioTableData : IData + { + UniTask LoadData(string audiotabledata_asset, string uitabledata_asset); + Stary.Evo.TableTextConversion.AudioTableData.MessageInfo GetAudioInfo(string auid); + UniTask GetAudioClip(string auid); + AudioTableData.AudioToUITableData GetAudioToUIInfo(string auid); + UniTask GetAudioClipToUISprite(string auid); + Stary.Evo.TableTextConversion.UITableData.MessageInfo GetUIInfo(string uiid); + UniTask GetUISprite(string uiid); + } + + + public class AudioTableData : AbstractData, IAudioTableData + { + private Stary.Evo.TableTextConversion.AudioTableData audioTableData; + + private Stary.Evo.TableTextConversion.UITableData uiTableDatas; + + protected override async void OnInit() + { + } + + public async UniTask LoadData(string audiotabledata_asset, string uitabledata_asset) + { + var audioHandle = + YooAssets.LoadAssetAsync(audiotabledata_asset); + await audioHandle.Task; + audioTableData = audioHandle.GetAssetObject(); + + var UIHandle = + YooAssets.LoadAssetAsync(uitabledata_asset); + await UIHandle.Task; + uiTableDatas = UIHandle.GetAssetObject(); + } + + + /// + /// 获取音频数据 + /// + /// + /// + public Stary.Evo.TableTextConversion.AudioTableData.MessageInfo GetAudioInfo(string auid) + { + var info = audioTableData.infos.Find(x => x.auid == auid); + if (info != null && !info.filename.Contains("Audios")) + { + info.filename = "Audios_" + info.filename; + } + + return info; + } + + /// + /// 获取音频 + /// + /// + /// + public async UniTask GetAudioClip(string auid) + { + var info=GetAudioInfo(auid); + var handle = YooAssets.LoadAssetAsync(info.filename); + await handle.Task; + if (handle.Status == EOperationStatus.Succeed) + { + return handle.GetAssetObject(); + } + else + { + Debug.LogError( + $"加载音频失败,错误的id为:{auid},错误的音频名称为:{info.filename},错误的错误信息为:{handle.LastError}"); + return null; + } + } + + /// + /// 获取音频数据获取UI数据 + /// + /// + /// + public AudioToUITableData GetAudioToUIInfo(string auid) + { + var info=GetAudioInfo(auid); + + Stary.Evo.TableTextConversion.UITableData.MessageInfo messageInfo = GetUIInfo(info.uirelated); + if (messageInfo != null) + { + return new AudioToUITableData() + { + audioFileName = info.filename, + UIMessageInfo = messageInfo + }; + } + else + { + Debug.LogError($"没有找到对应的uiid,错误的id为:{info.uirelated}"); + return default; + } + } + /// + /// 获取音频数据获取UI数据 + /// + /// + /// + public async UniTask GetAudioClipToUISprite(string auid) + { + var info=GetAudioToUIInfo(auid); + AudioClip audioClip = await GetAudioClip(auid); + Sprite sprite = await GetUISprite(info.UIMessageInfo.uiid); + + if (audioClip != null && sprite != null) + { + return new AudioToUIData() + { + audioClip = audioClip, + sprite = sprite + }; + } + else + { + Debug.LogError($"没有找到对应的uiid,错误的id为:{info.UIMessageInfo.uiid}"); + return default; + } + } + /// + /// 获取UI数据 + /// + /// + /// + public Stary.Evo.TableTextConversion.UITableData.MessageInfo GetUIInfo(string uiid) + { + var info = uiTableDatas.infos.Find(x => x.uiid == uiid); + if (info != null && !info.filename.Contains("Sprites_")) + { + info.filename = "Sprites_" + info.filename; + } + + return info; + } + /// + /// 获取UI + /// + /// + /// + public async UniTask GetUISprite(string uiid) + { + var info = GetUIInfo(uiid); + + var handle = YooAssets.LoadAssetAsync(info.filename); + await handle.Task; + if (handle.Status == EOperationStatus.Succeed) + { + return handle.GetAssetObject(); + } + else + { + Debug.LogError( + $"加载ui失败,错误的id为:{uiid},错误的ui名称为:{info.filename},错误的错误信息为:{handle.LastError}"); + return null; + } + } + + public override void Dispose() + { + } + + public struct AudioToUITableData + { + public string audioFileName; + public Stary.Evo.TableTextConversion.UITableData.MessageInfo UIMessageInfo; + } + public struct AudioToUIData + { + public AudioClip audioClip; + public Sprite sprite; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/AudioTableData.cs.meta b/Assets/Main/Script/Runtime/LasterDoMain/AudioTableData.cs.meta new file mode 100644 index 0000000..c2fb63c --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/AudioTableData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 336c695a4299453bb325ceeaaa9bb4ed +timeCreated: 1745736803 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/DigitalHumanVoiceSystem.cs b/Assets/Main/Script/Runtime/LasterDoMain/DigitalHumanVoiceSystem.cs new file mode 100644 index 0000000..e3c6cb1 --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/DigitalHumanVoiceSystem.cs @@ -0,0 +1,87 @@ +using System; +using System.Threading; +using Cysharp.Threading.Tasks; +using Main; +using Stary.Evo; +using Stary.Evo.UIFarme; +using UnityEngine; +using YooAsset; + +namespace Main +{ + public interface IDigitalHumanVoiceSystem : ISystem + { + UniTask PlayVoice(string auid, Action callback = null); + UniTask PlayTest(string auid, Action callback = null); + void PlayImage(string uiid); + } + + public class DigitalHumanVoiceSystem : AbstractSystem, IDigitalHumanVoiceSystem + { + private CancellationTokenSource tokenSource; + + + public async UniTask PlayVoice(string auid, Action callback = null) + { + DisposeTokenSource(); + tokenSource = new CancellationTokenSource(); + var info = this.GetData().GetAudioToUIInfo(auid); + var handle1 = YooAssets.LoadAssetAsync(info.audioFileName); + await handle1.WithCancellation(tokenSource.Token); + AudioClip audioClip = handle1.GetAssetObject(); + + var handle2 = YooAssets.LoadAssetAsync(info.UIMessageInfo.filename); + await handle2.WithCancellation(tokenSource.Token); + Sprite sprite = handle2.GetAssetObject(); + + MainArchitecture.Interface.GetSystem().SetTalkState(audioClip, sprite); + + await UniTask.Delay(TimeSpan.FromSeconds(audioClip.length+1f), cancellationToken: tokenSource.Token); + callback?.Invoke(); + } + public async UniTask PlayTest(string auid, Action callback = null) + { + DisposeTokenSource(); + tokenSource = new CancellationTokenSource(); + var info = this.GetData().GetAudioToUIInfo(auid); + var handle1 = YooAssets.LoadAssetAsync(info.audioFileName); + await handle1.WithCancellation(tokenSource.Token); + AudioClip audioClip = handle1.GetAssetObject(); + + + + MainArchitecture.Interface.GetSystem().SetTalkState(audioClip, info.UIMessageInfo.subtitle); + + await UniTask.Delay(TimeSpan.FromSeconds(audioClip.length), cancellationToken: tokenSource.Token); + callback?.Invoke(); + } + public async void PlayImage(string uiid) + { + DisposeTokenSource(); + tokenSource = new CancellationTokenSource(); + var info =this.GetData().GetUIInfo(uiid); + var handle1 = YooAssets.LoadAssetAsync(info.filename); + await handle1.WithCancellation(tokenSource.Token); + Sprite sprite = handle1.GetAssetObject(); + + MainArchitecture.Interface.GetSystem().SetTalkState( sprite); + } + protected override void OnInit() + { + } + + private void DisposeTokenSource() + { + if (tokenSource != null && !tokenSource.IsCancellationRequested) + { + tokenSource.Cancel(); + tokenSource.Dispose(); + tokenSource = null; + } + } + public override void Dispose() + { + DisposeTokenSource(); + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/DigitalHumanVoiceSystem.cs.meta b/Assets/Main/Script/Runtime/LasterDoMain/DigitalHumanVoiceSystem.cs.meta new file mode 100644 index 0000000..be0b7ec --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/DigitalHumanVoiceSystem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 67318e7492e648129b1de2df6f176a72 +timeCreated: 1745216067 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/IClickSystem.cs b/Assets/Main/Script/Runtime/LasterDoMain/IClickSystem.cs new file mode 100644 index 0000000..ed524ee --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/IClickSystem.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using Cysharp.Threading.Tasks; +using DG.Tweening; +using Stary.Evo; +using Stary.Evo.RKTools; +using UnityEngine; + +namespace Main +{ + public interface IClickSystem : ISystem + { + void AddClickIntervalEvent(Action callback); + void StartTime(); + void EndClick(); + + void BindClickEvent(List clickElementChildrens, Action callback); + void ClickBreatheTween(List tweenList, Transform tweenTarget); + + bool IsElementChildrenClick(); + } + + public class ClickSystem : AbstractSystem, IClickSystem + { + // public Sequence loopTargetTween; + + /// + /// 点击计时器 + /// + public float time; + + private CancellationTokenSource tokenSource; + + + private List clickElementChildrens; + + + private Action ClickIntervalEvent; + + protected override void OnInit() + { + } + + public void StartTime() + { + time = 0; + Update(); + } + + public void BindClickEvent(List clickElementChildrens, Action callback) + { + StartTime(); + this.clickElementChildrens = clickElementChildrens; + //绑定点击事件 + foreach (var child in clickElementChildrens) + { + child.transform.gameObject.ObjectAddTouchEvent(callback); + } + } + public void ClickBreatheTween(List tweenList, Transform tweenTarget) + { + Debug.Log("UnityEvo: 点击呼吸"); + time = 0; + foreach (var tween in tweenList) + { + tween.transform.gameObject.ObjectResumeTouchEvent(); + // if (tween.transform == tweenTarget) + // { + // tween.isClick = true; + // } + + if (tween.transform == tweenTarget) + { + tween.isClick = true; + tween.transform.GetComponent().CrossFade("dianji_idle", 0.2f); + this.SendEvent(ModeType.PLayAudioOrVideo,tween); + tweenTarget.gameObject.ObjectPauseTouchEvent(); + // if (loopTargetTween != null) + // { + // loopTargetTween.Kill(); + // loopTargetTween = null; + // } + // + // loopTargetTween = DOTween.Sequence(); + // loopTargetTween.Append(tweenTarget.DOScale(tweenTarget.lossyScale * 1.3f, 1f)); + // + // loopTargetTween.SetLoops(6, LoopType.Yoyo); + // loopTargetTween.OnKill(() => + // { + // if (tweenTarget != null) + // tweenTarget.DOScale(Vector3.one, 0.3f); + // }); + // loopTargetTween.Play(); + + + continue; + } + + // tween.transform.DOKill(); + // tween.transform.DOScale(Vector3.one * 0.9f, 0.5f); + tween.transform.GetComponent().CrossFade("dianji_nood", 1f); + } + } + + public void AddClickIntervalEvent(Action callback) + { + this.ClickIntervalEvent = callback; + } + public bool IsElementChildrenClick() + { + //是否全部已经点击 + for (int i = 0; i < clickElementChildrens.Count; i++) + { + if (clickElementChildrens[i].isClick == false) + { + return false; + } + } + return true; + } + + public void EndClick() + { + // if (loopTargetTween != null) + // { + // loopTargetTween.Kill(); + // loopTargetTween = null; + // } + + time = 0; + if (tokenSource != null) + { + tokenSource?.Cancel(); + tokenSource?.Dispose(); + tokenSource = null; + } + + foreach (var children in clickElementChildrens) + { + children.transform.gameObject.ObjectRemoveTouchEvent(); + children.transform.GetComponent().CrossFade("dianji_disappear", 0.2f); + + } + } + + private async void Update() + { + //TODO暂时禁用 + // if (tokenSource != null) + // { + // tokenSource?.Cancel(); + // } + // + // tokenSource = new CancellationTokenSource(); + // try + // { + // while (time <= 11 && !tokenSource.IsCancellationRequested) + // { + // time += Time.deltaTime; + // + // if (time >= 10) + // { + // Debug.Log("UnityEvo:执行未点击间隔事件"); + // time = 0; + // ClickIntervalEvent?.Invoke(); + // } + // + // await UniTask.Yield(tokenSource.Token); + // } + // } + // catch (OperationCanceledException e) + // { + // Debug.Log("UnityEvo: 取消任务:" + e); + // } + } + + public override void Dispose() + { + if (tokenSource != null) + { + tokenSource?.Cancel(); + tokenSource?.Dispose(); + tokenSource = null; + } + + // if (loopTargetTween != null) + // { + // loopTargetTween.Kill(); + // loopTargetTween = null; + // } + } + + + } + public class ClickElementChildren + { + public bool isClick = false; + public string[] auid; + public string vid; + public Transform transform; + + public Transform targetTransform; + + public ClickElementChildren(Transform child) + { + + this. transform = child; + } + public ClickElementChildren(Transform child, string[] auid, string vid) + { + this.auid = auid; + this.vid = vid; + this. transform = child; + } + public ClickElementChildren(Transform child,Transform targetTransform , string[] auid, string vid) + { + this.auid = auid; + this.vid = vid; + this. transform = child; + this.targetTransform= targetTransform; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/IClickSystem.cs.meta b/Assets/Main/Script/Runtime/LasterDoMain/IClickSystem.cs.meta new file mode 100644 index 0000000..305cbe5 --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/IClickSystem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 206bc7f4b09d456898aed456017e6529 +timeCreated: 1745915168 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/IntroPanel.cs b/Assets/Main/Script/Runtime/LasterDoMain/IntroPanel.cs new file mode 100644 index 0000000..f8a0217 --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/IntroPanel.cs @@ -0,0 +1,103 @@ +using System; +using Cysharp.Threading.Tasks; +using Stary.Evo; +using Stary.Evo.AudioCore; +using Stary.Evo.InformationSave; +using Stary.Evo.UIFarme; +using UnityEngine; +using UnityEngine.UI; +using YooAsset; + +namespace Main +{ + public class IntroPanel : BasePanel + { + static readonly string path = "IntroPanel"; + + private Image intro; + + private LocalTransformInfo transformInfo; + + public IntroPanel() + { + } + + + public override void Initialize(GameObject panelGo) + { + base.Initialize(panelGo); + + intro = activePanel.transform.Find("Intro").GetComponent(); + transformInfo = activePanel.transform.GetComponent(); + intro.gameObject.SetActive(false); + } + + public override void OnEnter() + { + base.OnEnter(); + + this.RegisterEvent(IntroType.IntroSprite, OnClickPreviousIntro); + this.RegisterEvent(IntroType.IntroAnimation, OnAddAnimation); + this.RegisterEvent(IntroType.IntroAudio, OnClickPreviousIntroAudio); + } + + public override void OnExit(float delay = 0) + { + base.OnExit(delay); + intro.sprite = null; + intro.gameObject.SetActive(false); + this.UnRegisterEvent(IntroType.IntroSprite, OnClickPreviousIntro); + this.UnRegisterEvent(IntroType.IntroAudio, OnClickPreviousIntroAudio); + this.UnRegisterEvent(IntroType.IntroAnimation, OnAddAnimation); + var animator = intro.transform.GetComponent(); + if (animator != null) + { + GameObject.Destroy(animator); + } + } + + public async void OnAddAnimation(RuntimeAnimatorController animatorController, string desc) + { + var animator = intro.transform.GetOrAddComponent(); + animator.runtimeAnimatorController = animatorController; + + intro.SetNativeSize(); + intro.gameObject.SetActive(true); + transformInfo.Set(desc); + } + + public async void OnClickPreviousIntro(string spriteName, string desc) + { + var handle= YooAssets.LoadAssetAsync(spriteName); + await handle.Task; + intro.sprite = handle.GetAssetObject(); + intro.SetNativeSize(); + intro.gameObject.SetActive(true); + transformInfo.Set(desc); + } + + public async void OnClickPreviousIntroAudio(string auid, string desc) + { + var info = await this.GetData().GetAudioClipToUISprite(auid); + AudioCoreManager.PlayVoice(new AudioData() + { + clip = info.audioClip, + }); + SetIntroSprite(info.sprite, desc); + } + private void SetIntroSprite(Sprite sprite, string desc) + { + + intro.sprite = sprite; + intro.SetNativeSize(); + intro.gameObject.SetActive(true); + transformInfo.Set(desc); + } + public enum IntroType + { + IntroSprite, + IntroAudio, + IntroAnimation + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/IntroPanel.cs.meta b/Assets/Main/Script/Runtime/LasterDoMain/IntroPanel.cs.meta new file mode 100644 index 0000000..0365d2f --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/IntroPanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2fced65e1b5fa8041a7f8474992e2a5a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/LasterDoMain/VideoTableData.cs b/Assets/Main/Script/Runtime/LasterDoMain/VideoTableData.cs new file mode 100644 index 0000000..5a232c6 --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/VideoTableData.cs @@ -0,0 +1,46 @@ +using Cysharp.Threading.Tasks; +using Stary.Evo; +using YooAsset; + +namespace Main +{ + public interface IVideoTableData : IData + { + UniTask LoadData(string videotabledata_asset); + Stary.Evo.TableTextConversion.VideoTableData.MessageInfo PlayVideoName(string vidid); + } + + + public class VideoTableData : AbstractData, IVideoTableData + { + private Stary.Evo.TableTextConversion.VideoTableData videoTableDatas; + + + protected override async void OnInit() + { + + } + + public async UniTask LoadData(string videotabledata_asset) + { + var handle = YooAssets.LoadAssetAsync(videotabledata_asset); + await handle.Task; + videoTableDatas = handle.GetAssetObject(); + } + public Stary.Evo.TableTextConversion.VideoTableData.MessageInfo PlayVideoName(string vidid) + { + var info = videoTableDatas.infos.Find(x => x.vidid == vidid); + if (info != null && !info.filename.Contains("Video")) + { + info.filename="Video_"+info.filename; + } + return info; + } + + + public override void Dispose() + { + + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/LasterDoMain/VideoTableData.cs.meta b/Assets/Main/Script/Runtime/LasterDoMain/VideoTableData.cs.meta new file mode 100644 index 0000000..3a0c6e9 --- /dev/null +++ b/Assets/Main/Script/Runtime/LasterDoMain/VideoTableData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2c1c8c62f563482ea249c39b08cab4fa +timeCreated: 1745311080 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Panel.meta b/Assets/Main/Script/Runtime/Panel.meta new file mode 100644 index 0000000..d5d5a30 --- /dev/null +++ b/Assets/Main/Script/Runtime/Panel.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b3f64633ec28465bb032f798d31269cf +timeCreated: 1745723917 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Panel/ModeType.cs b/Assets/Main/Script/Runtime/Panel/ModeType.cs new file mode 100644 index 0000000..e936eeb --- /dev/null +++ b/Assets/Main/Script/Runtime/Panel/ModeType.cs @@ -0,0 +1,6 @@ +public enum ModeType +{ + VideoStart, + VideoEnd, + PLayAudioOrVideo +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Panel/ModeType.cs.meta b/Assets/Main/Script/Runtime/Panel/ModeType.cs.meta new file mode 100644 index 0000000..9c673f2 --- /dev/null +++ b/Assets/Main/Script/Runtime/Panel/ModeType.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 83e20a216f634924a360a92115ffe0cd +timeCreated: 1745723981 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Panel/VideoPanel.cs b/Assets/Main/Script/Runtime/Panel/VideoPanel.cs new file mode 100644 index 0000000..d5b05ae --- /dev/null +++ b/Assets/Main/Script/Runtime/Panel/VideoPanel.cs @@ -0,0 +1,170 @@ +using System; +using Cysharp.Threading.Tasks; +using DG.Tweening; +using Stary.Evo; +using Stary.Evo.AudioCore; +using Stary.Evo.UIFarme; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.Video; +using YooAsset; + + +public class VideoPanel : BasePanel + { + private RawImage intro; + + private Animator _animator; + + private VideoPlayer videoPlayer; + + private AudioSource audioSource; + + private RenderTexture renderTexture; + public VideoPanel() + { + } + + + public override void Initialize(GameObject panelGo) + { + base.Initialize(panelGo); + + intro = activePanel.transform.Find("Intro").GetComponent(); + videoPlayer = activePanel.GetComponentInChildren(); + audioSource = activePanel.GetComponentInChildren(); + _animator = activePanel.GetComponentInChildren(); + } + + public override void OnEnter() + { + base.OnEnter(); + + this.RegisterEvent(ModeType.VideoStart, OnStartMove); + this.RegisterEvent(ModeType.VideoEnd, OnStopMove); + } + + public override void OnExit(float delay = 0) + { + base.OnExit(delay); + this.UnRegisterEvent(ModeType.VideoStart, OnStartMove); + this.UnRegisterEvent(ModeType.VideoEnd, OnStopMove); + } + + private void OnStartMove(VideoInfo info) + { + if (info.filename.Equals("")) + { + Debug.LogError("UnityEvo:视频文件名为空,必须传文件名才能执行"); + return; + } + + if (info.position!=null) + { + activePanel.transform.position = info.position.SetVector3Ctor(); + } + if (info.rotation!=null) + { + activePanel.transform.rotation = Quaternion.Euler(info.rotation.SetVector3Ctor()); + } + if (info.scale!=null) + { + activePanel.transform.DOScale(info.scale.SetVector3Ctor(),0.5f); + } + OnStartMove(info.filename,info.callback); + } + + + private async void OnStartMove(string fileName,Action callback) + { + _animator.gameObject.SetActive(true); + + + //新增renderTexture创建 + if (videoPlayer.isPlaying) + { + videoPlayer.Stop(); + //释放renderTexture + if (renderTexture != null) + { + renderTexture.Release(); + renderTexture = null; + } + } + renderTexture=new RenderTexture(1920, 1080, 24); + videoPlayer.targetTexture = renderTexture; + intro.texture = renderTexture; + + + var videHandle = YooAssets.LoadAssetAsync(fileName); + await videHandle.Task; + var musicHandle = YooAssets.LoadAssetAsync(fileName+"_mp3"); + await musicHandle.Task; + + Debug.Log("UnityEvo:开始播放视频:"+fileName); + VideoClip videoClip = videHandle.GetAssetObject(); + videoPlayer.source = VideoSource.VideoClip; + videoPlayer.clip = videoClip; + + Debug.Log("UnityEvo:开始播放视频的音频:"+fileName+"_mp3"); + AudioClip audioClip = musicHandle.GetAssetObject(); + audioSource.clip = audioClip; + + //等待视频加载完成 + videoPlayer.Prepare(); + videoPlayer.prepareCompleted += (source) => + { + _animator.Play("vid_maskAni", 0, 0); + + //预加载 + if (videoPlayer.isPrepared) + { + videoPlayer.Play(); + audioSource.Play(); + } + }; + + videoPlayer.loopPointReached += (source) => + { + OnStopMove(); + callback?.Invoke(); + }; + videoPlayer.errorReceived += (source, error) => { Debug.LogError($"视频播放失败:{error}"); }; + + } + + private void OnStopMove() + { + Debug.Log("UnityEvo:视频播放完成"); + AudioCoreManager.SetMusicVolume(new AudioData() + { + fadeDuration = 2f, + volume = 1f, + }); + _animator.Play("vid_maskDefault", 0, 0); + if (renderTexture != null) + { + renderTexture.Release(); + renderTexture = null; + } + + if (audioSource.isPlaying) + { + audioSource.Stop(); + } + PanelSystem.PopQueue(); + } + + + public struct VideoInfo + { + public string filename; + public Vector3Ctor position; + public Vector3Ctor rotation; + public Vector3Ctor scale; + public Action callback; + + } + + + } diff --git a/Assets/Main/Script/Runtime/Panel/VideoPanel.cs.meta b/Assets/Main/Script/Runtime/Panel/VideoPanel.cs.meta new file mode 100644 index 0000000..a1a2eab --- /dev/null +++ b/Assets/Main/Script/Runtime/Panel/VideoPanel.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bb1f78aabccc4287a8df3dfdc5158c7b +timeCreated: 1745723921 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Panel/VideoSystem.cs b/Assets/Main/Script/Runtime/Panel/VideoSystem.cs new file mode 100644 index 0000000..85b48e3 --- /dev/null +++ b/Assets/Main/Script/Runtime/Panel/VideoSystem.cs @@ -0,0 +1,38 @@ +using System; +using Stary.Evo; +using Stary.Evo.AudioCore; +using Stary.Evo.UIFarme; +using UnityEngine; + +public interface IVideoSystem : ISystem +{ + void PlayVideo(VideoPanel.VideoInfo info); + void StopVideo(); +} + +public class VideoSystem : AbstractSystem, IVideoSystem +{ + protected override void OnInit() + { + } + + public override void Dispose() + { + } + + public async void PlayVideo(VideoPanel.VideoInfo info) + { + AudioCoreManager.SetMusicVolume(new AudioData() + { + fadeDuration = 2f, + volume = 0f, + }); + await this.GetSystem().PushQueue(AppConfig.GetDefaultMainInstance().transform,"Main"); + this.GetSystem().SendPanelEvent(ModeType.VideoStart,info); + } + + public void StopVideo() + { + this.GetSystem().SendPanelEvent(ModeType.VideoEnd); + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Panel/VideoSystem.cs.meta b/Assets/Main/Script/Runtime/Panel/VideoSystem.cs.meta new file mode 100644 index 0000000..cc75859 --- /dev/null +++ b/Assets/Main/Script/Runtime/Panel/VideoSystem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e8c49084e4704cb99a6caae60466e889 +timeCreated: 1745724754 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Tools.meta b/Assets/Main/Script/Runtime/Tools.meta new file mode 100644 index 0000000..c63f344 --- /dev/null +++ b/Assets/Main/Script/Runtime/Tools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dca552217fdddaa4098bbd152e410548 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Tools/VectorExtension.cs b/Assets/Main/Script/Runtime/Tools/VectorExtension.cs new file mode 100644 index 0000000..0bdc0e5 --- /dev/null +++ b/Assets/Main/Script/Runtime/Tools/VectorExtension.cs @@ -0,0 +1,66 @@ +using System; +using UnityEngine; + +namespace Stary.Evo +{ + public static class VectorExtension { + + + public static Vector3Ctor GetVector3Ctor(this Vector3 vector) + { + return new Vector3Ctor(vector); + } + + public static Vector3 SetVector3Ctor(this Vector3Ctor vector3Ctor) + { + return new Vector3(vector3Ctor.x, vector3Ctor.y, vector3Ctor.z); + } + + public static Vector2Ctor GetVector2Ctor( this Vector2 vector) + { + return new Vector2Ctor(vector); + } + + public static Vector2 SetVector2Data(this Vector2Ctor vector3Ctor) + { + return new Vector2(vector3Ctor.x, vector3Ctor.y); + } + + } + [Serializable] + public class Vector3Ctor + { + public float x; + public float y; + public float z; + + public Vector3Ctor() + { + + } + public Vector3Ctor(Vector3 vector) + { + x = vector.x; + y = vector.y; + z = vector.z; + } + public Vector3Ctor(float x, float y, float z) + { + this.x = x; + this.y = y; + this.z = z; + } + } + [Serializable] + public class Vector2Ctor + { + public float x; + public float y; + + public Vector2Ctor(Vector2 vector) + { + x = vector.x; + y = vector.y; + } + } + } diff --git a/Assets/Main/Script/Runtime/Tools/VectorExtension.cs.meta b/Assets/Main/Script/Runtime/Tools/VectorExtension.cs.meta new file mode 100644 index 0000000..ea67f9a --- /dev/null +++ b/Assets/Main/Script/Runtime/Tools/VectorExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1077acf7c628ea24586d2c243ab718b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Tools/VoiceSwitchingScene.cs b/Assets/Main/Script/Runtime/Tools/VoiceSwitchingScene.cs new file mode 100644 index 0000000..765c3bb --- /dev/null +++ b/Assets/Main/Script/Runtime/Tools/VoiceSwitchingScene.cs @@ -0,0 +1,90 @@ +using System; +using Rokid.UXR.Module; +using Stary.Evo; +using UnityEngine; +using UnityEngine.Android; +using ModuleManager = Rokid.UXR.Module.ModuleManager; + +public class VoiceSwitchingScene : MonoBehaviour +{ + private String[] _sceneNames = new string[] + { + "打开第一个场景", + "打开第二个场景", + "打开第三个场景", + "打开第四个场景", + "打开第五个场景", + "打开第六个场景", + "打开第七个场景", + "打开第八个场景", + "打开第九个场景", + "打开第十个场景", + "打开第十一个场景", + "打开第十二个场景", + "打开第十三个场景", + "打开第十四个场景", + "打开第十五个场景", + "打开第十六个场景", + "打开第十七个场景", + "打开第十八个场景", + "打开第十九个场景", + "打开第二十个场景", + + }; + + private String[] _sceneNamesSpell = new string[] + { + "da kai di yi ge chang jing", + "da kai di er ge chang jing", + "da kai di san ge chang jing", + "da kai di si ge chang jing", + "da kai di wu ge chang jing", + "da kai di liu ge chang jing", + "da kai di qi ge chang jing", + "da kai di ba ge chang jing", + "da kai di jiu ge chang jing", + "da kai di shi ge chang jing", + "da kai di shi yi ge chang jing", + "da kai di shi er ge chang jing", + "da kai di shi san ge chang jing", + "da kai di shi si ge chang jing", + "da kai di shi wu ge chang jing", + "da kai di shi liu ge chang jing", + "da kai di shi qi ge chang jing", + "da kai di shi ba ge chang jing", + "da kai di shi jiu ge chang jing", + "da kai di shi er shi ge chang jing", + }; + private HybridClREntrance hybridClREntrance; + + private MainDomainAll mainDomainAll; + // Start is called before the first frame update + void Start() + { + hybridClREntrance = GetComponent(); + if (!Permission.HasUserAuthorizedPermission("android.permission.RECORD_AUDIO")) + { + Permission.RequestUserPermission("android.permission.RECORD_AUDIO"); + } + ModuleManager.Instance.RegistModule("com.rokid.voicecommand.VoiceCommandHelper", false); + OfflineVoiceModule.Instance.ChangeVoiceCommandLanguage(LANGUAGE.CHINESE); + + mainDomainAll = Resources.Load("MainDomainAll"); + for (int i = 0; i < mainDomainAll.domainAll.Length; i++) + { + if(mainDomainAll.domainAll[i].isVideo) + OfflineVoiceModule.Instance.AddInstruct(LANGUAGE.CHINESE, _sceneNames[i], _sceneNamesSpell[i], this.gameObject.name, "OnReceive"); + } + OfflineVoiceModule.Instance.Commit(); + } + + + void OnReceive(string msg) + { + int index = Array.IndexOf(_sceneNames, msg); + if (index != -1) + { + hybridClREntrance.OpenDomain(mainDomainAll.domainAll[index].domainName , OpenDomainType.VIOICE); + } + } +} diff --git a/Assets/Main/Script/Runtime/Tools/VoiceSwitchingScene.cs.meta b/Assets/Main/Script/Runtime/Tools/VoiceSwitchingScene.cs.meta new file mode 100644 index 0000000..9cb8f29 --- /dev/null +++ b/Assets/Main/Script/Runtime/Tools/VoiceSwitchingScene.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97f6e15196934254c94bd3de1f798b77 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/Tools/ZipTool.cs b/Assets/Main/Script/Runtime/Tools/ZipTool.cs new file mode 100644 index 0000000..b44de28 --- /dev/null +++ b/Assets/Main/Script/Runtime/Tools/ZipTool.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using Cysharp.Threading.Tasks; +using UnityEngine; +using UnityEngine.Networking; + +namespace Stary.Evo +{ + public class ZipTool + { + // 新增:带进度回调的下载解压方法 + public static async UniTask DownloadAndUnzipAsync(string url, string extractPath, + Action downloadProgress = null, Action unzipProgress = null) + { + string tempPath = Path.Combine(Application.persistentDataPath, "temp.zip"); + + try + { + // 下载ZIP文件 + using( UnityWebRequest request =WebRequester(url)) + { + request.downloadHandler = new DownloadHandlerFile(tempPath); + var operation = request.SendWebRequest(); + + while (!operation.isDone) + { + downloadProgress?.Invoke(request.downloadProgress); + await UniTask.Yield(); + } + + if (request.result != UnityWebRequest.Result.Success) + { + throw new Exception($"下载失败:{request.error}"); + } + } + + // 解压下载的文件 + return await UnzipAsync(tempPath, extractPath, unzipProgress); + } + finally + { + // 清理临时文件 + if (File.Exists(tempPath)) + { + File.Delete(tempPath); + } + } + } + + // 修改:添加进度回调参数 + public static async UniTask UnzipAsync(string zipPath, string extractPath, + Action progressCallback = null) + { + try + { + List pathList = new List(); + using (ZipArchive archive = ZipFile.OpenRead(zipPath)) + { + float totalEntries = archive.Entries.Count; + float processed = 0; + + foreach (ZipArchiveEntry entry in archive.Entries) + { + string filePath = Path.Combine(extractPath, entry.FullName); + Directory.CreateDirectory(Path.GetDirectoryName(filePath)); + + if (!string.IsNullOrEmpty(entry.Name)) + { + using (Stream inputStream = entry.Open()) + using (FileStream outputStream = File.Create(filePath)) + { + await inputStream.CopyToAsync(outputStream); + pathList.Add(outputStream.Name); + } + } + + processed++; + float progress = processed / totalEntries; + progressCallback?.Invoke(progress); + Debug.Log($"解压进度: {progress:P0}"); + } + } + Debug.Log($"解压完成: {extractPath}"); + return pathList.ToArray(); + } + catch (Exception ex) + { + Debug.LogError($"解压失败: {ex.Message}"); + throw; + } + } + /// + /// 自定义网络请求器需要登录 + /// + /// + /// + private static UnityWebRequest WebRequester(string url) + { + var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET); + var authorization = GetAuthorization(AppConfig.USERNAME, AppConfig.PASSWORD); + request.SetRequestHeader("AUTHORIZATION", authorization); + return request; + } + + private static string GetAuthorization(string userName, string password) + { + string auth = userName + ":" + password; + var bytes = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(auth); + return "Basic " + System.Convert.ToBase64String(bytes); + } + } + + +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/Tools/ZipTool.cs.meta b/Assets/Main/Script/Runtime/Tools/ZipTool.cs.meta new file mode 100644 index 0000000..c6880d9 --- /dev/null +++ b/Assets/Main/Script/Runtime/Tools/ZipTool.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2f5ebd73225744188b38cf307e565ff2 +timeCreated: 1747988495 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController.meta b/Assets/Main/Script/Runtime/kkController.meta new file mode 100644 index 0000000..c5938b5 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f3ff09b4853f0948ab930b5371dd636 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/kkController/DigitalHumanPointData.cs b/Assets/Main/Script/Runtime/kkController/DigitalHumanPointData.cs new file mode 100644 index 0000000..72e64b7 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/DigitalHumanPointData.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Main +{ + public struct DigitalHumanPointData + { + public string Name; + public Transform pointTransform; + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/DigitalHumanPointData.cs.meta b/Assets/Main/Script/Runtime/kkController/DigitalHumanPointData.cs.meta new file mode 100644 index 0000000..f196727 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/DigitalHumanPointData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ead6b7bbb32b41fbaf9b4cc09a5c707a +timeCreated: 1745477826 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/DigitalHumanSystem.cs b/Assets/Main/Script/Runtime/kkController/DigitalHumanSystem.cs new file mode 100644 index 0000000..e480c47 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/DigitalHumanSystem.cs @@ -0,0 +1,220 @@ +using System.Collections.Generic; +using DG.Tweening; +using Stary.Evo; +using Stary.Evo.AudioCore; +using Stary.Evo.TableTextConversion; +using UnityEngine; +using YooAsset; + +namespace Main +{ + public interface IDigitalHuman : ISystem + { + void LoadKKController(Transform parent); + void AddPointData(DigitalHumanPointData pointData); + + void SetStartState(); + void SetPositionOfPoint(Transform pointTransform); + void SetPositionOfPoint(); + void SetIdleState(KKIdleStateParam param); + + void SetTalkState(AudioClip clip, List info); + void SetTalkState(AudioClip clip, Sprite icon); + void SetTalkState(AudioClip clip); + void SetTalkState(Sprite icon); + void KillTalkState(); + void SetHintState(bool isContinue); + void SetReactState(); + void SetDigitalHumanCoord(Vector3 position, Vector3 scale); + void SetEndState(); + } + + public class DigitalHuman : AbstractSystem, IDigitalHuman + { + private GameObject kkController; + private Transform fxFlowing; + + private KKFsmSystem fsmSystem; + + /// + /// 点位位置数据 + /// + private List points = new List(); + + protected override void OnInit() + { + } + + public async void LoadKKController(Transform parent) + { + var package = YooAssets.TryGetPackage("Main"); + if (package != null) + { + var handle = package.LoadAssetAsync(R.Res.Main.prefabs.kkcontroller_prefab); + await handle.Task; + kkController = handle.InstantiateSync(parent); + fxFlowing = kkController.transform.Find("fx_spiraltrail_flowing"); + fsmSystem = new KKFsmSystem(kkController); + fsmSystem.AddState(new KKIdleState(fsmSystem)); + fsmSystem.AddState(new KKHintState(fsmSystem)); + fsmSystem.AddState(new KKGuideState(fsmSystem)); + fsmSystem.AddState(new KKReactState(fsmSystem)); + fsmSystem.AddState(new KKTalkState(fsmSystem)); + fsmSystem.AddState(new KKRunState(fsmSystem)); + fsmSystem.AddState(new KKStartState(fsmSystem)); + fsmSystem.AddState(new KKEndState(fsmSystem)); + fsmSystem.SetCurState(nameof(DefaultState)); + } + } + + public void AddPointData(DigitalHumanPointData pointData) + { + for (int i = 0; i < points.Count; i++) + { + if (points[i].Name != pointData.Name) + { + points.Add(pointData); + } + else + { + Debug.Log("UnityEvo:点位数据存在重复,数字人无法设置点位位置:" + pointData.Name); + } + } + } + + /// + /// 开场动画 + /// + public void SetStartState() + { + fsmSystem.SetCurState(nameof(KKStartState)); + } + + /// + /// 设置到达点位位置 + /// + public void SetPositionOfPoint(Transform pointTransform) + { + fsmSystem.SetCurState(nameof(KKGuideState), pointTransform); + } + + /// + /// 设置到达点位位置 + /// + public void SetPositionOfPoint() + { + if (points.Count > 0) + { + int index = -1; + for (int i = 0; i < points.Count; i++) + { + if (AppConfig.ASSETPACKGENAME == points[i].Name) + { + index = i; + break; + } + } + + if (index != -1 && index + 1 < points.Count) + { + fsmSystem.SetCurState(nameof(KKGuideState), points[index + 1].pointTransform); + } + } + } + + /// + /// 设置idle站立状态 + /// + /// 是否指引玩家靠近 + public void SetIdleState(KKIdleStateParam param) + { + fsmSystem.SetCurState(nameof(KKIdleState), (object)param); + } + + /// + /// 设置讲解状态 + /// + public void SetTalkState(AudioClip clip, Sprite icon) + { + fsmSystem.SetCurState(nameof(KKTalkState), clip, icon); + } + + public void SetTalkState(AudioClip clip) + { + fsmSystem.SetCurState(nameof(KKTalkState), clip, (Sprite)null); + } + + public void SetTalkState(Sprite icon) + { + fsmSystem.SetCurState(nameof(KKTalkState), (AudioClip)null, icon); + } + + /// + /// 设置讲解状态 + /// + public void SetTalkState(AudioClip clip, List info) + { + fsmSystem.SetCurState(nameof(KKTalkState), clip, info); + } + + /// + /// 强制打断讲解状态 + /// + public void KillTalkState() + { + AudioCoreManager.StopVoice(); + fsmSystem.CloseImage(); + fsmSystem.CloseText(); + } + + /// + /// 设置问答反馈状态 + /// + /// 正确还是错误 + public void SetHintState(bool isContinue) + { + fsmSystem.SetCurState(nameof(KKHintState), (object)isContinue); + } + + /// + /// 设置鼓掌状态 + /// + public void SetReactState() + { + fsmSystem.SetCurState(nameof(KKReactState)); + } + + /// + /// 设置虚拟人坐标 + /// + /// + /// + public void SetDigitalHumanCoord(Vector3 position, Vector3 scale) + { + fsmSystem.SetCurState(nameof(KKRunState)); + kkController.transform.DOMove(position, 2f).OnComplete(() => + { + fsmSystem.SetCurState(nameof(KKIdleState), (object)KKIdleStateParam.NotVoice); + }); + kkController.transform.DOScale(scale, 2f); + if (fxFlowing != null) + fxFlowing.transform.DOScale(scale, 2f); + } + + public void SetEndState() + { + fsmSystem.SetCurState(nameof(KKEndState)); + } + + + public override void Dispose() + { + fsmSystem = null; + if (kkController != null) + { + GameObject.Destroy(kkController); + kkController = null; + } + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/DigitalHumanSystem.cs.meta b/Assets/Main/Script/Runtime/kkController/DigitalHumanSystem.cs.meta new file mode 100644 index 0000000..ef2b8bb --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/DigitalHumanSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: acbc8c12f9332fa43bcbf8789e101fa3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/kkController/fsm.meta b/Assets/Main/Script/Runtime/kkController/fsm.meta new file mode 100644 index 0000000..3b26bfd --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7c411cf7fe497343a284f1477d129d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKControllerTest.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKControllerTest.cs new file mode 100644 index 0000000..d5728ed --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKControllerTest.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Sirenix.OdinInspector; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + public class KKControllerTest : MonoBehaviour + { + public GameObject kkController; + + public Transform kkGuidePoint; + + public Sprite Sprite; + public AudioClip AudioClip; + + + private KKFsmSystem fsmSystem; + + private void Start() + { + fsmSystem = new KKFsmSystem(kkController); + fsmSystem.AddState(new DefaultState(fsmSystem)); + fsmSystem.AddState(new KKIdleState(fsmSystem)); + fsmSystem.AddState(new KKHintState(fsmSystem)); + fsmSystem.AddState(new KKGuideState(fsmSystem)); + fsmSystem.AddState(new KKReactState(fsmSystem)); + fsmSystem.AddState(new KKTalkState(fsmSystem)); + fsmSystem.SetCurState(nameof(DefaultState)); + } + + private void Update() + { + fsmSystem.CurState.OnUpdate(); + } + + [Button] + public void IdleIsVoice() + { + fsmSystem.SetCurState(nameof(KKIdleState), (object)KKIdleStateParam.IsVoice); + } + + [Button] + public void IdleNotVoice() + { + fsmSystem.SetCurState(nameof(KKIdleState), (object)KKIdleStateParam.NotVoice); + } + + [Button] + public void GUide() + { + fsmSystem.SetCurState(nameof(KKGuideState), kkGuidePoint); + } + + [Button] + public void HintTrue() + { + fsmSystem.SetCurState(nameof(KKHintState), (object)true); + } + + [Button] + public void HintFalse() + { + fsmSystem.SetCurState(nameof(KKHintState), (object)false); + } + + [Button] + public void React() + { + fsmSystem.SetCurState(nameof(KKReactState)); + } + + [Button] + public void Talk() + { + fsmSystem.SetCurState(nameof(KKTalkState), AudioClip, Sprite); + } + + [Button] + public void Start1() + { + fsmSystem.SetCurState(nameof(KKIdleState)); + } + + [Button] + public void End() + { + fsmSystem.SetCurState(nameof(KKIdleState)); + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKControllerTest.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKControllerTest.cs.meta new file mode 100644 index 0000000..2d2c540 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKControllerTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c88db27930db49249a1c3611ca7284eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKEndState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKEndState.cs new file mode 100644 index 0000000..e60975f --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKEndState.cs @@ -0,0 +1,38 @@ +using Cysharp.Threading.Tasks; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + /// + /// 结束状态 + /// + public class KKEndState: AbstractFSMIState + { + private string aniName = "anim_ip_disappear"; + public KKEndState(IFsmSystem system) : base(system) + { + } + + public override UniTask OnEnterAsync() + { + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + if (kkFsmSystem.animator != null) + { + kkFsmSystem.animator.CrossFade(aniName, 0.2f,0, 0f); + + } + else + { + Debug.LogError("UnityEvo:KKFsmSystem: animator is null"); + } + return UniTask.CompletedTask; + } + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKEndState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKEndState.cs.meta new file mode 100644 index 0000000..eb8e47e --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKEndState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 52167847c2fa440b870fb2a157f1d074 +timeCreated: 1745399204 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKFsmSystem.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKFsmSystem.cs new file mode 100644 index 0000000..dc0ea88 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKFsmSystem.cs @@ -0,0 +1,52 @@ +using DG.Tweening; +using Stary.Evo; +using UnityEngine; +using UnityEngine.UI; + +namespace Main +{ + public class KKFsmSystem : FsmSystem, IFsmSystem + { + public GameObject kk; + + public Animator animator; + public Image image; + public Text text; + public KKFsmSystem(GameObject kk) + { + this.kk = kk; + this.animator = kk.GetComponentInChildren(); + this.image = kk.GetComponentInChildren(); + this.image.color = new Color(1, 1, 1, 0); + this.text = kk.GetComponentInChildren(); + this.text.color = new Color(1, 1, 1, 0); + } + + public void OpenImage() + { + this.image.DOFade(1, 1f); + } + + public void CloseImage() + { + this.image.DOFade(0, 1f); + } + + public void OpenText() + { + this.text.DOFade(1, 1f); + } + + public void CloseText() + { + this.text.DOFade(0, 1f); + } + + public float GetAnimationProgress(int layerIndex = 0) + { + if (animator == null) return 0; + AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(layerIndex); + return stateInfo.normalizedTime % 1; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKFsmSystem.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKFsmSystem.cs.meta new file mode 100644 index 0000000..bcdacb9 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKFsmSystem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e3eb011e76cf4d0ba9059cf92114333f +timeCreated: 1745398545 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKGuideState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKGuideState.cs new file mode 100644 index 0000000..b3016f2 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKGuideState.cs @@ -0,0 +1,68 @@ +using Cysharp.Threading.Tasks; +using DG.Tweening; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + /// + /// 用户未靠近时,“请跟我来”手势 + /// + public class KKGuideState : AbstractFSMIState + { + private string aniGuideLeftName = "anim_ip_guide_inviteL"; + private string aniGuideRightName = "anim_ip_guide_inviteR"; + + public KKGuideState(IFsmSystem system) : base(system) + { + } + + public override UniTask OnEnterAsync() + { + return UniTask.CompletedTask; + } + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + + public override async UniTask OnEnterAsync(T param) + { + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + Transform NextPoint = param as Transform; + if (NextPoint != null) + { + // 获取主摄像机并计算相对位置 + var camera = Camera.main.transform; + Vector3 viewportPos = camera.GetComponent().WorldToViewportPoint(NextPoint.position); + + // 根据视口坐标判断左右(视口X坐标<0.5为左侧,>=0.5为右侧) + if (viewportPos.x < 0.5f) + { + kkFsmSystem.animator.CrossFade(aniGuideLeftName,0.2f, 0, 0f); + } + else + { + kkFsmSystem.animator.CrossFade(aniGuideRightName,0.2f, 0, 0f); + } + + float animProgress = 0; + while (animProgress <= 0.99f) + { + Debug.Log(animProgress); + animProgress=kkFsmSystem.GetAnimationProgress(0); + await UniTask.Yield(); + } + + kkFsmSystem.kk.transform.DOScale(Vector3.zero, 0.5f).OnComplete(() => + { + kkFsmSystem.kk.transform.position = NextPoint.position; + kkFsmSystem.kk.transform.DOScale(Vector3.one, 0.5f); + + FsmSystem.SetCurState(nameof(KKIdleState),(object)KKIdleStateParam.IsVoice); + }); + } + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKGuideState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKGuideState.cs.meta new file mode 100644 index 0000000..b3b11da --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKGuideState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 72adebd57a5e43c2997efab047224c18 +timeCreated: 1745399340 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKHintState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKHintState.cs new file mode 100644 index 0000000..7e27071 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKHintState.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using Stary.Evo; +using UnityEngine; +using YooAsset; + +namespace Main +{ + /// + /// 反馈手势状态 + /// + public class KKHintState : AbstractFSMIState + { + private string aniContinueName = "anim_ip_hint_continue"; + private string aniNotyetName = "anim_ip_hint_notyet"; + + public KKHintState(IFsmSystem system) : base(system) + { + } + + + public override UniTask OnEnterAsync() + { + return UniTask.CompletedTask; + } + + public override async UniTask OnEnterAsync(object param) + { + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + if (kkFsmSystem.animator != null) + { + bool isContinue = (bool)param; + if (isContinue) + { + kkFsmSystem.animator.CrossFade(aniContinueName, 0.2f,0,0); + } + else + { + kkFsmSystem.animator.CrossFade(aniNotyetName,0.2f, 0, 0f); + } + + float animProgress = 0; + while (animProgress <= 0.99f) + { + Debug.Log(animProgress); + animProgress=kkFsmSystem.GetAnimationProgress(0); + await UniTask.Yield(); + } + FsmSystem.SetCurState(nameof(KKIdleState),(object)KKIdleStateParam.NotVoice); + + + + } + else + { + Debug.LogError("UnityEvo:KKFsmSystem: animator is null"); + } + + } + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKHintState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKHintState.cs.meta new file mode 100644 index 0000000..fd27a37 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKHintState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 342e0d1acb234177ac8c44412dcf5046 +timeCreated: 1745399413 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKIdleState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKIdleState.cs new file mode 100644 index 0000000..307026c --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKIdleState.cs @@ -0,0 +1,68 @@ +using System.Collections; +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + /// + /// 待机状态 + /// + public class KKIdleState : AbstractFSMIState + { + private string aniName = "anim_ip_idle_loop"; + + private float idleTime = 0f; + private KKIdleStateParam isVoice; + + public KKIdleState(IFsmSystem system) : base(system) + { + } + + public override UniTask OnEnterAsync() + { + return UniTask.CompletedTask; + } + + public override UniTask OnEnterAsync(object param) + { + isVoice = (KKIdleStateParam)param; + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + if (kkFsmSystem.animator != null) + { + kkFsmSystem.animator.CrossFade(aniName, 0.2f, 0, 0f); + } + else + { + Debug.LogError("UnityEvo:KKFsmSystem: animator is null"); + } + + return UniTask.CompletedTask; + } + + + public override void OnUpdate() + { + base.OnUpdate(); + idleTime += Time.deltaTime; + if (idleTime >= 10 && isVoice == KKIdleStateParam.IsVoice) + { + //播放过来语音 + idleTime = 0; + Debug.Log("KKIdleState::OnUpdate"); + } + } + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + } + + public enum KKIdleStateParam + { + IsVoice, + NotVoice + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKIdleState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKIdleState.cs.meta new file mode 100644 index 0000000..bc88355 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKIdleState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2fffa4d1466936449b51e47de374350c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKReactState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKReactState.cs new file mode 100644 index 0000000..38a6861 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKReactState.cs @@ -0,0 +1,48 @@ +using Cysharp.Threading.Tasks; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + /// + /// 鼓掌状态 + /// + public class KKReactState: AbstractFSMIState + { + private string aniName = "anim_ip_react_encourage"; + public KKReactState(IFsmSystem system) : base(system) + { + } + + public override async UniTask OnEnterAsync() + { + + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + if (kkFsmSystem.animator != null) + { + kkFsmSystem.animator.CrossFade(aniName,0.2f, 0, 0f); + + float animProgress = 0; + while (animProgress <= 0.99f) + { + Debug.Log(animProgress); + animProgress=kkFsmSystem.GetAnimationProgress(0); + await UniTask.Yield(); + } + FsmSystem.SetCurState(nameof(KKIdleState),(object)KKIdleStateParam.NotVoice); + + } + else + { + Debug.LogError("UnityEvo:KKFsmSystem: animator is null"); + } + + } + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + + + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKReactState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKReactState.cs.meta new file mode 100644 index 0000000..641c59f --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKReactState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 66f9860699a14a9cb79b86aac4f938dc +timeCreated: 1745399464 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKRunState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKRunState.cs new file mode 100644 index 0000000..2125ad4 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKRunState.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + /// + /// 待机状态 + /// + public class KKRunState : AbstractFSMIState + { + private string aniName = "anim_ip_explain_talk_loop"; + + + + public KKRunState(IFsmSystem system) : base(system) + { + } + + public override UniTask OnEnterAsync() + { + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + if (kkFsmSystem.animator != null) + { + kkFsmSystem.animator.CrossFade(aniName, 0.2f,0, 0f); + } + else + { + Debug.LogError("UnityEvo:KKFsmSystem: animator is null"); + } + return UniTask.CompletedTask; + } + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + } + +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKRunState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKRunState.cs.meta new file mode 100644 index 0000000..9e9ff97 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKRunState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 73d781b0c95b4b769d515a756744df84 +timeCreated: 1745476983 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKStartState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKStartState.cs new file mode 100644 index 0000000..f345bd5 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKStartState.cs @@ -0,0 +1,38 @@ +using Cysharp.Threading.Tasks; +using Stary.Evo; +using UnityEngine; + +namespace Main +{ + /// + /// 开始状态 + /// + public class KKStartState: AbstractFSMIState + { + private string aniName = "anim_ip_appear"; + public KKStartState(IFsmSystem system) : base(system) + { + + } + + public override UniTask OnEnterAsync() + { + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + if (kkFsmSystem.animator != null) + { + kkFsmSystem.animator.CrossFade(aniName, 0.2f,0, 0f); + } + else + { + Debug.LogError("UnityEvo:KKFsmSystem: animator is null"); + } + return UniTask.CompletedTask; + } + + public override UniTask OnExitAsync() + { + return UniTask.CompletedTask; + } + + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKStartState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKStartState.cs.meta new file mode 100644 index 0000000..8878770 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKStartState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c04d19ca3ec94e58984c3599399ae63a +timeCreated: 1745399152 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKTalkState.cs b/Assets/Main/Script/Runtime/kkController/fsm/KKTalkState.cs new file mode 100644 index 0000000..a782dd1 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKTalkState.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using Cysharp.Threading.Tasks; +using Stary.Evo; +using Stary.Evo.AudioCore; +using Stary.Evo.TableTextConversion; +using UnityEngine; + +namespace Main +{ + /// + /// 讲解状态 + /// + public class KKTalkState : AbstractFSMIState + { + private string aniName = "anim_ip_explain_talk_loop"; + private string aniMouthName = "anim_ip_talk"; + + private CancellationTokenSource cts; + + public KKTalkState(IFsmSystem system) : base(system) + { + } + + public override UniTask OnEnterAsync() + { + return UniTask.CompletedTask; + } + + public override UniTask OnExitAsync() + { + if (cts.IsCancellationRequested) + { + cts?.Cancel(); + cts?.Dispose(); + } + + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + if (kkFsmSystem != null) + { + // kkFsmSystem.CloseImage(); + // kkFsmSystem.CloseText(); + } + + kkFsmSystem.animator.CrossFade("defaultState", 0.2f, 1, 0f); + return UniTask.CompletedTask; + } + + public override async UniTask OnEnterAsync(T1 param1, T2 param2) + { + if (cts != null && !cts.IsCancellationRequested) + { + cts?.Cancel(); + cts?.Dispose(); + cts = null; + } + + cts = new CancellationTokenSource(); + + KKFsmSystem kkFsmSystem = FsmSystem as KKFsmSystem; + AudioClip clip = param1 as AudioClip; + if (clip != null) + { + AudioCoreManager.PlayVoice(new AudioData() + { + clip = clip, + delayOnCompleteTime = 1f, + onComplete = async () => + { + kkFsmSystem.CloseImage(); + + float animProgress = 0; + while (animProgress <= 0.99f) + { + animProgress = kkFsmSystem.GetAnimationProgress(0); + await UniTask.Yield(); + } + + FsmSystem.SetCurState(nameof(KKIdleState), (object)KKIdleStateParam.NotVoice); + } + }); + } + + if (kkFsmSystem.animator != null) + { + kkFsmSystem.animator.CrossFade(aniName, 0.2f, 0, 0f); + kkFsmSystem.animator.CrossFade(aniMouthName, 0.2f, 1, 0f); + } + else + { + Debug.LogError("UnityEvo:KKFsmSystem: animator is null"); + } + + if (kkFsmSystem.image != null) + { + if (param2 != null && param2 is Sprite) + { + kkFsmSystem.image.sprite = param2 as Sprite; + kkFsmSystem.image.SetNativeSize(); + kkFsmSystem.CloseText(); + kkFsmSystem.OpenImage(); + } + } + + if (kkFsmSystem.text != null) + { + if (param2 != null && param2 is List) + { + kkFsmSystem.CloseImage(); + kkFsmSystem.OpenText(); + List infos = param2 as List; + if (infos.Count > 0) + { + for (int i = 0; i < infos.Count; i++) + { + kkFsmSystem.text.text = infos[i].subtitle; + await UniTask.Delay(TimeSpan.FromSeconds(infos[i].end - infos[i].start), + cancellationToken: cts.Token); + } + + kkFsmSystem.CloseText(); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/kkController/fsm/KKTalkState.cs.meta b/Assets/Main/Script/Runtime/kkController/fsm/KKTalkState.cs.meta new file mode 100644 index 0000000..42474c0 --- /dev/null +++ b/Assets/Main/Script/Runtime/kkController/fsm/KKTalkState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7d5cbc01e12a4a8ba1616131a9a97bef +timeCreated: 1745399300 \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/stary.main.asmdef b/Assets/Main/Script/Runtime/stary.main.asmdef new file mode 100644 index 0000000..2d0a2e2 --- /dev/null +++ b/Assets/Main/Script/Runtime/stary.main.asmdef @@ -0,0 +1,28 @@ +{ + "name": "stary.main", + "rootNamespace": "", + "references": [ + "GUID:e34a5702dd353724aa315fb8011f08c3", + "GUID:d1a793c2b6959e04ea45b972eaa369c8", + "GUID:f51ebe6a0ceec4240a699833d6309b23", + "GUID:4d1926c9df5b052469a1c63448b7609a", + "GUID:006be2ba6588a8b4989d3724bb01d8b7", + "GUID:fe14bc9dd681249d19cf4ef377c7e29e", + "GUID:6447e10b87dc140ab924878c1ecef665", + "GUID:ec45849e30ba03e4dab386099d8c697b", + "GUID:aa8669166ad4e984bb229dc22e7b1e02", + "GUID:66fdc96a271fc954e9da30c76a486d9c", + "GUID:6a5d7223300a2ef48aa366288a446472", + "GUID:10c9b58b77ad42b4193e2a393b1a9899", + "GUID:fad681b9bfe621d4fa07f4f69c311443" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Main/Script/Runtime/stary.main.asmdef.meta b/Assets/Main/Script/Runtime/stary.main.asmdef.meta new file mode 100644 index 0000000..f86935f --- /dev/null +++ b/Assets/Main/Script/Runtime/stary.main.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4492e37c9663479418f9522cc4796b57 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/main.unity b/Assets/Main/main.unity new file mode 100644 index 0000000..36d6095 --- /dev/null +++ b/Assets/Main/main.unity @@ -0,0 +1,676 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &468672898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 468672900} + - component: {fileID: 468672899} + m_Layer: 0 + m_Name: VoiceSwitchingScene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &468672899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 468672898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97f6e15196934254c94bd3de1f798b77, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &468672900 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 468672898} + 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: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &479226269 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 479226271} + - component: {fileID: 479226270} + m_Layer: 0 + m_Name: TrackedImageEvoManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &479226270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 479226269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: be33290f8aa3440cac3e24a68606958b, type: 3} + m_Name: + m_EditorClassIdentifier: + defaultImageTrackedPrefab: {fileID: 0} + markerDBPath: 1 + onEnableOpenImageTracker: 1 + logText: {fileID: 0} + TrackedImages: [] +--- !u!4 &479226271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 479226269} + 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: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &502847611 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1063703914408733873, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1444951330750579118, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2846607673153851985, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2972982185434264034, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: raycastMask.m_Bits + value: 55 + objectReference: {fileID: 0} + - target: {fileID: 4253865539476117917, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5603409259511159925, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: raycastMask.m_Bits + value: 55 + objectReference: {fileID: 0} + - target: {fileID: 6709467796961666169, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_Name + value: RKHand + objectReference: {fileID: 0} + - target: {fileID: 7242184588812280469, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: raycastMask.m_Bits + value: 55 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} +--- !u!1 &540596587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 540596589} + - component: {fileID: 540596588} + - component: {fileID: 540596590} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &540596588 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540596587} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &540596589 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540596587} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &540596590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540596587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &813910981 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5190571452710748018, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_Name + value: '[RKInput]' + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} +--- !u!1 &944750651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 944750653} + - component: {fileID: 944750652} + m_Layer: 0 + m_Name: KKControllerTest + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &944750652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944750651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c88db27930db49249a1c3611ca7284eb, type: 3} + m_Name: + m_EditorClassIdentifier: + kkController: {fileID: 0} + kkGuidePoint: {fileID: 0} + Sprite: {fileID: 21300000, guid: 958027d3348a14e66a32140ce3633bb9, type: 3} + AudioClip: {fileID: 8300000, guid: 08a783bab8d345946b2865566c581de3, type: 3} +--- !u!4 &944750653 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944750651} + 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: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1420098364 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6045076911616643429, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + m_PrefabInstance: {fileID: 1706348064} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1420098365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420098364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!54 &1420098373 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420098364} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!135 &1420098374 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420098364} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &1706348064 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6045076911616643428, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_CullingMask.m_Bits + value: 4294967295 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643429, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_Name + value: RKCameraRig + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} +--- !u!1 &1829387359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1829387361} + - component: {fileID: 1829387360} + - component: {fileID: 1829387362} + m_Layer: 0 + m_Name: LoadDll + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1829387360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829387359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 467bc10b56c272043a89b12cbf23b3ef, type: 3} + m_Name: + m_EditorClassIdentifier: + domain: X_02_01 +--- !u!4 &1829387361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829387359} + 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: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1829387362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829387359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97f6e15196934254c94bd3de1f798b77, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Main/main.unity.meta b/Assets/Main/main.unity.meta new file mode 100644 index 0000000..483d6d1 --- /dev/null +++ b/Assets/Main/main.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e879075554a4fa0478fccd80a6c20f0f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Main/main_Watermark.unity b/Assets/Main/main_Watermark.unity new file mode 100644 index 0000000..6d4cf21 --- /dev/null +++ b/Assets/Main/main_Watermark.unity @@ -0,0 +1,873 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &468672898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 468672900} + - component: {fileID: 468672899} + m_Layer: 0 + m_Name: VoiceSwitchingScene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &468672899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 468672898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97f6e15196934254c94bd3de1f798b77, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &468672900 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 468672898} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &479226269 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 479226271} + - component: {fileID: 479226270} + m_Layer: 0 + m_Name: TrackedImageEvoManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &479226270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 479226269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: be33290f8aa3440cac3e24a68606958b, type: 3} + m_Name: + m_EditorClassIdentifier: + defaultImageTrackedPrefab: {fileID: 0} + markerDBPath: 1 + onEnableOpenImageTracker: 1 + logText: {fileID: 0} + TrackedImages: [] +--- !u!4 &479226271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 479226269} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &502847611 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1063703914408733873, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1444951330750579118, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2130055604429528582, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2846607673153851985, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2972982185434264034, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: raycastMask.m_Bits + value: 55 + objectReference: {fileID: 0} + - target: {fileID: 4253865539476117917, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5603409259511159925, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: raycastMask.m_Bits + value: 55 + objectReference: {fileID: 0} + - target: {fileID: 6709467796961666169, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: m_Name + value: RKHand + objectReference: {fileID: 0} + - target: {fileID: 7242184588812280469, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} + propertyPath: raycastMask.m_Bits + value: 55 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 79aecacdb0d2c40e887cfa007ef37ba8, type: 3} +--- !u!1 &540596587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 540596589} + - component: {fileID: 540596588} + - component: {fileID: 540596590} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &540596588 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540596587} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &540596589 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540596587} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &540596590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540596587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!1001 &813910981 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5190571452710748018, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_Name + value: '[RKInput]' + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5190571452710748019, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: fa2ab4a52b98844a5beea51c6d5ab85a, type: 3} +--- !u!1 &944750651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 944750653} + - component: {fileID: 944750652} + m_Layer: 0 + m_Name: KKControllerTest + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &944750652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944750651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c88db27930db49249a1c3611ca7284eb, type: 3} + m_Name: + m_EditorClassIdentifier: + kkController: {fileID: 0} + kkGuidePoint: {fileID: 0} + Sprite: {fileID: 21300000, guid: 958027d3348a14e66a32140ce3633bb9, type: 3} + AudioClip: {fileID: 8300000, guid: 08a783bab8d345946b2865566c581de3, type: 3} +--- !u!4 &944750653 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944750651} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1420098364 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6045076911616643429, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + m_PrefabInstance: {fileID: 1706348064} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1420098365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420098364} + 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: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + 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_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!54 &1420098373 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420098364} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!135 &1420098374 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420098364} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &1706348064 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6045076911616643428, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_CullingMask.m_Bits + value: 4294967295 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643429, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_Name + value: RKCameraRig + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + insertIndex: -1 + addedObject: {fileID: 1965822773} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 6045076911616643429, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + insertIndex: -1 + addedObject: {fileID: 1420098365} + - targetCorrespondingSourceObject: {fileID: 6045076911616643429, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + insertIndex: -1 + addedObject: {fileID: 1420098373} + - targetCorrespondingSourceObject: {fileID: 6045076911616643429, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + insertIndex: -1 + addedObject: {fileID: 1420098374} + m_SourcePrefab: {fileID: 100100000, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} +--- !u!4 &1706348065 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6045076911616643431, guid: bc7bf2e56b74d4038af31f75d0b2d024, type: 3} + m_PrefabInstance: {fileID: 1706348064} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1829387359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1829387361} + - component: {fileID: 1829387360} + - component: {fileID: 1829387362} + m_Layer: 0 + m_Name: LoadDll + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1829387360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829387359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 467bc10b56c272043a89b12cbf23b3ef, type: 3} + m_Name: + m_EditorClassIdentifier: + domain: Main +--- !u!4 &1829387361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829387359} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1829387362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1829387359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97f6e15196934254c94bd3de1f798b77, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1965822772 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1706348065} + m_Modifications: + - target: {fileID: 1852672594281396838, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_Name + value: Watermark + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_SizeDelta.x + value: 1920 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_SizeDelta.y + value: 1080 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalPosition.z + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_AnchoredPosition.x + value: -0.32202148 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.09399414 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} +--- !u!224 &1965822773 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1852672594281396845, guid: 2e23a1f3cdf8f254397eeec5a2c8e50e, type: 3} + m_PrefabInstance: {fileID: 1965822772} + m_PrefabAsset: {fileID: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 540596589} + - {fileID: 1829387361} + - {fileID: 1706348064} + - {fileID: 813910981} + - {fileID: 502847611} + - {fileID: 468672900} + - {fileID: 479226271} + - {fileID: 944750653} diff --git a/Assets/Main/main_Watermark.unity.meta b/Assets/Main/main_Watermark.unity.meta new file mode 100644 index 0000000..9667876 --- /dev/null +++ b/Assets/Main/main_Watermark.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8e8da8c9bdfb0624aab2a39862be306e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: