diff --git a/UnityLibrary/UnityFramework.framework/Data/Managed/Metadata/global-metadata.dat b/UnityLibrary/UnityFramework.framework/Data/Managed/Metadata/global-metadata.dat
new file mode 100644
index 0000000..14db97b
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Managed/Metadata/global-metadata.dat differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/Coffee.UIEffect.R.dll-resources.dat b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/Coffee.UIEffect.R.dll-resources.dat
new file mode 100644
index 0000000..d020d1f
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/Coffee.UIEffect.R.dll-resources.dat differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/Coffee.UIParticle.R.dll-resources.dat b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/Coffee.UIParticle.R.dll-resources.dat
new file mode 100644
index 0000000..d020d1f
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/Coffee.UIParticle.R.dll-resources.dat differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/System.Data.dll-resources.dat b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/System.Data.dll-resources.dat
new file mode 100644
index 0000000..28c39a6
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/System.Data.dll-resources.dat differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/System.Drawing.dll-resources.dat b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/System.Drawing.dll-resources.dat
new file mode 100644
index 0000000..1fc340d
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/System.Drawing.dll-resources.dat differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/mscorlib.dll-resources.dat b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/mscorlib.dll-resources.dat
new file mode 100644
index 0000000..6d144fc
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Managed/Resources/mscorlib.dll-resources.dat differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Managed/mono/4.0/machine.config b/UnityLibrary/UnityFramework.framework/Data/Managed/mono/4.0/machine.config
new file mode 100644
index 0000000..f3b71c4
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Data/Managed/mono/4.0/machine.config
@@ -0,0 +1,307 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/DOTween.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/DOTween.dll.bytes
new file mode 100644
index 0000000..d089465
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/DOTween.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/FlutterUnityIntegration.Runtime.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/FlutterUnityIntegration.Runtime.dll.bytes
new file mode 100644
index 0000000..3ffd459
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/FlutterUnityIntegration.Runtime.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/Google.Protobuf.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/Google.Protobuf.dll.bytes
new file mode 100644
index 0000000..4b4257a
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/Google.Protobuf.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/Newtonsoft.Json.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/Newtonsoft.Json.dll.bytes
new file mode 100644
index 0000000..7155fd0
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/Newtonsoft.Json.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/QFramework.CoreKit.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/QFramework.CoreKit.dll.bytes
new file mode 100644
index 0000000..52fe9e6
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/QFramework.CoreKit.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/QFramework.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/QFramework.dll.bytes
new file mode 100644
index 0000000..07b8386
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/QFramework.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/ResKit.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/ResKit.dll.bytes
new file mode 100644
index 0000000..0fe7b00
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/ResKit.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/System.Core.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/System.Core.dll.bytes
new file mode 100644
index 0000000..d8df0f9
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/System.Core.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/System.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/System.dll.bytes
new file mode 100644
index 0000000..60d1d30
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/System.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UIKit.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UIKit.dll.bytes
new file mode 100644
index 0000000..e147bcc
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UIKit.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UnityEngine.CoreModule.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UnityEngine.CoreModule.dll.bytes
new file mode 100644
index 0000000..78ff6bc
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UnityEngine.CoreModule.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UnityEngine.JSONSerializeModule.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UnityEngine.JSONSerializeModule.dll.bytes
new file mode 100644
index 0000000..ae59891
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/UnityEngine.JSONSerializeModule.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/YooAsset.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/YooAsset.dll.bytes
new file mode 100644
index 0000000..374a81f
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/YooAsset.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/mscorlib.dll.bytes b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/mscorlib.dll.bytes
new file mode 100644
index 0000000..d0d8d77
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/Aot/mscorlib.dll.bytes differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Raw/AssetBundles/iOS/asset_bundle_config.bin b/UnityLibrary/UnityFramework.framework/Data/Raw/AssetBundles/iOS/asset_bundle_config.bin
new file mode 100644
index 0000000..c60db06
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Raw/AssetBundles/iOS/asset_bundle_config.bin differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/Resources/unity_builtin_extra b/UnityLibrary/UnityFramework.framework/Data/Resources/unity_builtin_extra
new file mode 100644
index 0000000..d68a3d1
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/Resources/unity_builtin_extra differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/RuntimeInitializeOnLoads.json b/UnityLibrary/UnityFramework.framework/Data/RuntimeInitializeOnLoads.json
new file mode 100644
index 0000000..f02d5fb
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Data/RuntimeInitializeOnLoads.json
@@ -0,0 +1 @@
+{"root":[{"assemblyName":"Assembly-CSharp","nameSpace":"","className":"SkipUnityLogo","methodName":"BeforeSplashScreen","loadTypes":3,"isUnityClass":false},{"assemblyName":"AudioKit","nameSpace":"QFramework","className":"Architecture","methodName":"AutoInit","loadTypes":1,"isUnityClass":false},{"assemblyName":"Coffee.UIEffect","nameSpace":"Coffee.UIEffectInternal","className":"UIExtraCallbacks","methodName":"InitializeOnLoad","loadTypes":1,"isUnityClass":false},{"assemblyName":"Coffee.UIEffect","nameSpace":"Coffee.UIEffects","className":"ImageProxy","methodName":"InitializeOnLoad","loadTypes":1,"isUnityClass":false},{"assemblyName":"Coffee.UIEffect","nameSpace":"Coffee.UIEffects","className":"TmpProxy","methodName":"RuntimeInitializeOnLoadMethod","loadTypes":1,"isUnityClass":false},{"assemblyName":"Coffee.UIEffect","nameSpace":"Coffee.UIEffects","className":"TmpProxy","methodName":"InitializeOnLoad","loadTypes":1,"isUnityClass":false},{"assemblyName":"Coffee.UIParticle","nameSpace":"Coffee.UIParticleInternal","className":"UIExtraCallbacks","methodName":"InitializeOnLoad","loadTypes":1,"isUnityClass":false},{"assemblyName":"Coffee.UIParticle","nameSpace":"Coffee.UIExtensions","className":"UIParticleUpdater","methodName":"InitializeOnLoad","loadTypes":1,"isUnityClass":false},{"assemblyName":"IngameDebugConsole.Runtime","nameSpace":"IngameDebugConsole","className":"DebugLogConsole","methodName":"ResetStatics","loadTypes":4,"isUnityClass":false},{"assemblyName":"QFramework.CoreKit","nameSpace":"QFramework","className":"DeprecateActionKit","methodName":"InitNodeSystem","loadTypes":0,"isUnityClass":false},{"assemblyName":"QFramework.CoreKit","nameSpace":"QFramework","className":"LocaleKit","methodName":"AutoInit","loadTypes":1,"isUnityClass":false},{"assemblyName":"QFramework","nameSpace":"QFramework","className":"ComparerAutoRegister","methodName":"AutoRegister","loadTypes":1,"isUnityClass":false},{"assemblyName":"ResKit","nameSpace":"QFramework","className":"Architecture","methodName":"AutoInit","loadTypes":1,"isUnityClass":false},{"assemblyName":"spine-unity","nameSpace":"Spine.Unity.AttachmentTools","className":"AtlasUtilities","methodName":"Init","loadTypes":4,"isUnityClass":false},{"assemblyName":"SupportOldQF","nameSpace":"QFramework","className":"AudioKitWithResKitInit","methodName":"Init","loadTypes":1,"isUnityClass":false},{"assemblyName":"SupportOldQF","nameSpace":"QFramework","className":"UIKitWithResKitInit","methodName":"Init","loadTypes":1,"isUnityClass":false},{"assemblyName":"Unity.2D.Animation.Runtime","nameSpace":"","className":"$BurstDirectCallInitializer","methodName":"Initialize","loadTypes":2,"isUnityClass":true},{"assemblyName":"Unity.Collections","nameSpace":"","className":"$BurstDirectCallInitializer","methodName":"Initialize","loadTypes":2,"isUnityClass":true},{"assemblyName":"Unity.RenderPipelines.Core.Runtime","nameSpace":"UnityEngine.Experimental.Rendering","className":"XRSystem","methodName":"XRSystemInit","loadTypes":3,"isUnityClass":true},{"assemblyName":"Unity.RenderPipelines.Core.Runtime","nameSpace":"UnityEngine.Rendering","className":"DebugUpdater","methodName":"RuntimeInit","loadTypes":0,"isUnityClass":true},{"assemblyName":"Unity.VisualScripting.Core","nameSpace":"Unity.VisualScripting","className":"RuntimeVSUsageUtility","methodName":"RuntimeInitializeOnLoadBeforeSceneLoad","loadTypes":1,"isUnityClass":true}]}
diff --git a/UnityLibrary/UnityFramework.framework/Data/ScriptingAssemblies.json b/UnityLibrary/UnityFramework.framework/Data/ScriptingAssemblies.json
new file mode 100644
index 0000000..32cb07b
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Data/ScriptingAssemblies.json
@@ -0,0 +1 @@
+{"names":["UnityEngine.dll","UnityEngine.AIModule.dll","UnityEngine.ARModule.dll","UnityEngine.AccessibilityModule.dll","UnityEngine.AndroidJNIModule.dll","UnityEngine.AnimationModule.dll","UnityEngine.AssetBundleModule.dll","UnityEngine.AudioModule.dll","UnityEngine.ClothModule.dll","UnityEngine.ContentLoadModule.dll","UnityEngine.CoreModule.dll","UnityEngine.CrashReportingModule.dll","UnityEngine.DSPGraphModule.dll","UnityEngine.DirectorModule.dll","UnityEngine.GIModule.dll","UnityEngine.GameCenterModule.dll","UnityEngine.GridModule.dll","UnityEngine.HotReloadModule.dll","UnityEngine.IMGUIModule.dll","UnityEngine.ImageConversionModule.dll","UnityEngine.InputModule.dll","UnityEngine.InputLegacyModule.dll","UnityEngine.JSONSerializeModule.dll","UnityEngine.LocalizationModule.dll","UnityEngine.ParticleSystemModule.dll","UnityEngine.PerformanceReportingModule.dll","UnityEngine.PhysicsModule.dll","UnityEngine.Physics2DModule.dll","UnityEngine.ProfilerModule.dll","UnityEngine.PropertiesModule.dll","UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll","UnityEngine.ScreenCaptureModule.dll","UnityEngine.SharedInternalsModule.dll","UnityEngine.SpriteMaskModule.dll","UnityEngine.SpriteShapeModule.dll","UnityEngine.StreamingModule.dll","UnityEngine.SubstanceModule.dll","UnityEngine.SubsystemsModule.dll","UnityEngine.TLSModule.dll","UnityEngine.TerrainModule.dll","UnityEngine.TerrainPhysicsModule.dll","UnityEngine.TextCoreFontEngineModule.dll","UnityEngine.TextCoreTextEngineModule.dll","UnityEngine.TextRenderingModule.dll","UnityEngine.TilemapModule.dll","UnityEngine.UIModule.dll","UnityEngine.UIElementsModule.dll","UnityEngine.UmbraModule.dll","UnityEngine.UnityAnalyticsModule.dll","UnityEngine.UnityAnalyticsCommonModule.dll","UnityEngine.UnityConnectModule.dll","UnityEngine.UnityCurlModule.dll","UnityEngine.UnityTestProtocolModule.dll","UnityEngine.UnityWebRequestModule.dll","UnityEngine.UnityWebRequestAssetBundleModule.dll","UnityEngine.UnityWebRequestAudioModule.dll","UnityEngine.UnityWebRequestTextureModule.dll","UnityEngine.UnityWebRequestWWWModule.dll","UnityEngine.VFXModule.dll","UnityEngine.VRModule.dll","UnityEngine.VehiclesModule.dll","UnityEngine.VideoModule.dll","UnityEngine.WindModule.dll","UnityEngine.XRModule.dll","Assembly-CSharp.dll","Unity.2D.IK.Runtime.dll","HybridCLR.Runtime.dll","Unity.RenderPipelines.Core.Runtime.dll","Utilities.dll","YooAsset.dll","Unity.ScriptableBuildPipeline.dll","QFramework.CoreKit.dll","Coffee.UIEffect.dll","spine-csharp.dll","FlutterUnityIntegration.Runtime.dll","Unity.RenderPipelines.Universal.Config.Runtime.dll","Unity.VisualScripting.Flow.dll","SupportOldQF.dll","Unity.RenderPipelines.Core.ShaderLibrary.dll","ResKit.dll","Unity.Collections.dll","UIKit.dll","Unity.2D.PixelPerfect.dll","spine-unity.dll","Unity.TextMeshPro.dll","Unity.VisualScripting.DocCodeExamples.dll","Coffee.UIParticle.dll","DOTween.Modules.dll","QFramework.dll","Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll","UnlimitedScrollUI.dll","Unity.RenderPipelines.Universal.Runtime.dll","Unity.Burst.dll","MEC.dll","UnlimitedScrollUIExample.dll","Unity.VisualScripting.Core.dll","Unity.2D.Animation.Runtime.dll","UnityEngine.UI.dll","Unity.RenderPipelines.Universal.2D.Internal.dll","SimpleInspectorAttributes.dll","Unity.InternalAPIEngineBridge.001.dll","Unity.2D.Common.Runtime.dll","Unity.RenderPipeline.Universal.ShaderLibrary.dll","Unity.Timeline.dll","AudioKit.dll","Builtin.dll","Unity.Mathematics.dll","UnityWebSocket.Runtime.dll","Unity.RenderPipelines.Universal.Shaders.dll","IngameDebugConsole.Runtime.dll","Unity.VisualScripting.State.dll","SimpleScrollSnap.dll","Unity.Collections.LowLevel.ILSupport.dll","DOTween.dll","System.Runtime.CompilerServices.Unsafe.dll","Coffee.UIEffect.R.dll","Unity.VisualScripting.Antlr3.Runtime.dll","Unity.Burst.Unsafe.dll","Newtonsoft.Json.dll","Coffee.UIParticle.R.dll","Google.Protobuf.dll","GameCommon.dll","Game104.dll"],"types":[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]}
\ No newline at end of file
diff --git a/UnityLibrary/UnityFramework.framework/Data/boot.config b/UnityLibrary/UnityFramework.framework/Data/boot.config
new file mode 100644
index 0000000..26ef359
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Data/boot.config
@@ -0,0 +1,4 @@
+wait-for-native-debugger=0
+hdr-display-enabled=0
+gc-max-time-slice=3
+build-guid=581c492e0cd84ddabe612acfa49a91d3
diff --git a/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers b/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers
new file mode 100644
index 0000000..6726281
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers.assets b/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers.assets
new file mode 100644
index 0000000..97f3623
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers.assets differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers.assets.resS b/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers.assets.resS
new file mode 100644
index 0000000..06965b0
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/globalgamemanagers.assets.resS differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/level0 b/UnityLibrary/UnityFramework.framework/Data/level0
new file mode 100644
index 0000000..5287370
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/level0 differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/resources.assets b/UnityLibrary/UnityFramework.framework/Data/resources.assets
new file mode 100644
index 0000000..97f04c0
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/resources.assets differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/resources.assets.resS b/UnityLibrary/UnityFramework.framework/Data/resources.assets.resS
new file mode 100644
index 0000000..93a56ad
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/resources.assets.resS differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/sharedassets0.assets b/UnityLibrary/UnityFramework.framework/Data/sharedassets0.assets
new file mode 100644
index 0000000..015ee14
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/sharedassets0.assets differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/sharedassets0.assets.resS b/UnityLibrary/UnityFramework.framework/Data/sharedassets0.assets.resS
new file mode 100644
index 0000000..004c39d
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/sharedassets0.assets.resS differ
diff --git a/UnityLibrary/UnityFramework.framework/Data/unity default resources b/UnityLibrary/UnityFramework.framework/Data/unity default resources
new file mode 100644
index 0000000..e23629b
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Data/unity default resources differ
diff --git a/UnityLibrary/UnityFramework.framework/Headers/LifeCycleListener.h b/UnityLibrary/UnityFramework.framework/Headers/LifeCycleListener.h
new file mode 100644
index 0000000..6471baa
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Headers/LifeCycleListener.h
@@ -0,0 +1,29 @@
+#pragma once
+
+// important app life-cycle events
+
+@protocol LifeCycleListener
+@optional
+- (void)didFinishLaunching:(NSNotification*)notification;
+- (void)didBecomeActive:(NSNotification*)notification;
+- (void)willResignActive:(NSNotification*)notification;
+- (void)didEnterBackground:(NSNotification*)notification;
+- (void)willEnterForeground:(NSNotification*)notification;
+- (void)willTerminate:(NSNotification*)notification;
+- (void)unityDidUnload:(NSNotification*)notification;
+- (void)unityDidQuit:(NSNotification*)notification;
+@end
+
+void UnityRegisterLifeCycleListener(id obj);
+void UnityUnregisterLifeCycleListener(id obj);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern __attribute__((visibility("default"))) NSString* const kUnityDidUnload;
+extern __attribute__((visibility("default"))) NSString* const kUnityDidQuit;
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/UnityLibrary/UnityFramework.framework/Headers/RedefinePlatforms.h b/UnityLibrary/UnityFramework.framework/Headers/RedefinePlatforms.h
new file mode 100644
index 0000000..20258eb
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Headers/RedefinePlatforms.h
@@ -0,0 +1,186 @@
+// DO NOT PUT #pragma once or include guard check here
+// This header is designed to be able to be included multiple times
+
+// This header is used to redefine platforms after they were temporary undefined by UndefinePlatforms.h
+// Please make sure to always use this paired with the UndefinePlatforms.h header.
+//
+// ex.
+//
+// #include "UndefinePlatforms.h"
+// #include "Some3rdParty.h"
+// #include "RedefinePlatforms.h"
+
+#ifndef DETAIL__PLATFORMS_HAD_BEEN_UNDEFINED_BY_UNDEFINEPLATFORMS_H
+ #error "RedefinePlatforms.h can only be used after UndefinePlatforms.h got included before."
+#endif
+
+#undef DETAIL__PLATFORMS_HAD_BEEN_UNDEFINED_BY_UNDEFINEPLATFORMS_H
+
+// define all other platforms to 0
+#undef PLATFORM_WIN
+#if defined(DETAIL__TEMP_PLATFORM_WIN_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_WIN_WAS_1
+ #define PLATFORM_WIN 1
+#else
+ #define PLATFORM_WIN 0
+#endif
+
+#undef PLATFORM_OSX
+#if defined(DETAIL__TEMP_PLATFORM_OSX_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_OSX_WAS_1
+ #define PLATFORM_OSX 1
+#else
+ #define PLATFORM_OSX 0
+#endif
+
+#undef PLATFORM_LINUX
+#if defined(DETAIL__TEMP_PLATFORM_LINUX_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_LINUX_WAS_1
+ #define PLATFORM_LINUX 1
+#else
+ #define PLATFORM_LINUX 0
+#endif
+
+#undef PLATFORM_WINRT
+#if defined(DETAIL__TEMP_PLATFORM_WINRT_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_WINRT_WAS_1
+ #define PLATFORM_WINRT 1
+#else
+ #define PLATFORM_WINRT 0
+#endif
+
+#undef PLATFORM_FAMILY_WINDOWSGAMES
+#if defined(DETAIL__TEMP_PLATFORM_FAMILY_WINDOWSGAMES_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_FAMILY_WINDOWSGAMES_WAS_1
+ #define PLATFORM_FAMILY_WINDOWSGAMES 1
+#else
+ #define PLATFORM_FAMILY_WINDOWSGAMES 0
+#endif
+
+#undef PLATFORM_WEBGL
+#if defined(DETAIL__TEMP_PLATFORM_WEBGL_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_WEBGL_WAS_1
+ #define PLATFORM_WEBGL 1
+#else
+ #define PLATFORM_WEBGL 0
+#endif
+
+#undef PLATFORM_WASI
+#if defined(DETAIL__TEMP_PLATFORM_WASI_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_WASI_WAS_1
+ #define PLATFORM_WASI 1
+#else
+ #define PLATFORM_WASI 0
+#endif
+
+#undef PLATFORM_ANDROID
+#if defined(DETAIL__TEMP_PLATFORM_ANDROID_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_ANDROID_WAS_1
+ #define PLATFORM_ANDROID 1
+#else
+ #define PLATFORM_ANDROID 0
+#endif
+
+#undef PLATFORM_PS4
+#if defined(DETAIL__TEMP_PLATFORM_PS4_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_PS4_WAS_1
+ #define PLATFORM_PS4 1
+#else
+ #define PLATFORM_PS4 0
+#endif
+
+#undef PLATFORM_PS5
+#if defined(DETAIL__TEMP_PLATFORM_PS5_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_PS5_WAS_1
+ #define PLATFORM_PS5 1
+#else
+ #define PLATFORM_PS5 0
+#endif
+
+#undef PLATFORM_IPHONE
+#if defined(DETAIL__TEMP_PLATFORM_IPHONE_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_IPHONE_WAS_1
+ #define PLATFORM_IPHONE 1
+#else
+ #define PLATFORM_IPHONE 0
+#endif
+
+#undef PLATFORM_IOS
+#if defined(DETAIL__TEMP_PLATFORM_IOS_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_IOS_WAS_1
+ #define PLATFORM_IOS 1
+#else
+ #define PLATFORM_IOS 0
+#endif
+
+#undef PLATFORM_TVOS
+#if defined(DETAIL__TEMP_PLATFORM_TVOS_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_TVOS_WAS_1
+ #define PLATFORM_TVOS 1
+#else
+ #define PLATFORM_TVOS 0
+#endif
+
+#undef PLATFORM_VISIONOS
+#if defined(DETAIL__TEMP_PLATFORM_VISIONOS_WAS_1)
+#undef DETAIL__TEMP_PLATFORM_VISIONOS_WAS_1
+#define PLATFORM_VISIONOS 1
+#else
+#define PLATFORM_VISIONOS 0
+#endif
+
+#undef PLATFORM_XBOXONE
+#if defined(DETAIL__TEMP_PLATFORM_XBOXONE_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_XBOXONE_WAS_1
+ #define PLATFORM_XBOXONE 1
+#else
+ #define PLATFORM_XBOXONE 0
+#endif
+
+#undef PLATFORM_SWITCH
+#if defined(DETAIL__TEMP_PLATFORM_SWITCH_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_SWITCH_WAS_1
+ #define PLATFORM_SWITCH 1
+#else
+ #define PLATFORM_SWITCH 0
+#endif
+
+#undef PLATFORM_LUMIN
+#if defined(DETAIL__TEMP_PLATFORM_LUMIN_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_LUMIN_WAS_1
+ #define PLATFORM_LUMIN 1
+#else
+ #define PLATFORM_LUMIN 0
+#endif
+
+#undef PLATFORM_STADIA
+#if defined(DETAIL__TEMP_PLATFORM_STADIA_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_STADIA_WAS_1
+ #define PLATFORM_STADIA 1
+#else
+ #define PLATFORM_STADIA 0
+#endif
+
+#undef PLATFORM_NETBSD
+#if defined(DETAIL__TEMP_PLATFORM_NETBSD_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_NETBSD_WAS_1
+ #define PLATFORM_NETBSD 1
+#else
+ #define PLATFORM_NETBSD 0
+#endif
+
+#undef PLATFORM_EMBEDDED_LINUX
+#if defined(DETAIL__TEMP_PLATFORM_EMBEDDED_LINUX_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_EMBEDDED_LINUX_WAS_1
+ #define PLATFORM_EMBEDDED_LINUX 1
+#else
+ #define PLATFORM_EMBEDDED_LINUX 0
+#endif
+
+#undef PLATFORM_QNX
+#if defined(DETAIL__TEMP_PLATFORM_QNX_WAS_1)
+ #undef DETAIL__TEMP_PLATFORM_QNX_WAS_1
+ #define PLATFORM_QNX 1
+#else
+ #define PLATFORM_QNX 0
+#endif
diff --git a/UnityLibrary/UnityFramework.framework/Headers/RenderPluginDelegate.h b/UnityLibrary/UnityFramework.framework/Headers/RenderPluginDelegate.h
new file mode 100644
index 0000000..9bf16b9
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Headers/RenderPluginDelegate.h
@@ -0,0 +1,68 @@
+#pragma once
+
+#include "LifeCycleListener.h"
+
+struct UnityDisplaySurfaceBase; // Unity/UnityRendering.h
+struct RenderingSurfaceParams; // Unity/DisplayManager.h
+
+// due to delicate nature of render loop we have just one delegate in app
+// if you need to use several rendering delegates you need to do one of:
+// 1. create custom delegate that will have code to combine effects by itself
+// 2. use helper that simply holds array of delegates (which will work only in easiest cases)
+@protocol RenderPluginDelegate
+
+@required
+// this will be called right after gles intialization.
+// surface pointer will never be changed, so you should keep it.
+// the only valid fields in there as of now are layer and context
+- (void)mainDisplayInited:(struct UnityDisplaySurfaceBase*)surface;
+
+@optional
+
+// this will be called before recreating main display surface (from [UnityView recreateRenderingSurface])
+// you can tweak params here.
+// use it for enabling CVTextureCache support and the likes
+- (void)onBeforeMainDisplaySurfaceRecreate:(struct RenderingSurfaceParams*)params;
+
+// this will be called right after recreating main display surface (from [UnityView recreateRenderingSurface])
+// as [UnityView recreateRenderingSurface] is the only place where unity itself will trigger surface recreate
+// you can use this method to update your rendering depending on changes
+- (void)onAfterMainDisplaySurfaceRecreate;
+
+// this will be called after frame render and msaa resolve but before blitting to system FB
+// you can expect that frame contents are ready (though still in target resolution)
+// use it for anylizing/postprocessing rendered frame, taking screenshot and the like
+// you should use targetFB if it is not 0
+// otherwise use systemFB (covers case of intermediate fb not needed: no msaa, native res, no CVTextureCache involved)
+- (void)onFrameResolved;
+@end
+
+
+// simple helper for common plugin stuff
+// you can implement protocol directly, but subclassing this will provide some common implementation
+@interface RenderPluginDelegate : NSObject
+{
+ struct UnityDisplaySurfaceBase* mainDisplaySurface;
+}
+- (void)mainDisplayInited:(struct UnityDisplaySurfaceBase*)surface;
+@end
+
+
+// simple helper to have an array of render delegates.
+// be warned that it works in simplest cases only, when there is no interop between delegates
+@interface RenderPluginArrayDelegate : RenderPluginDelegate
+{
+ NSArray* delegateArray;
+}
+@property(nonatomic, retain) NSArray* delegateArray;
+- (void)mainDisplayInited:(struct UnityDisplaySurfaceBase*)surface;
+- (void)onBeforeMainDisplaySurfaceRecreate:(struct RenderingSurfaceParams*)params;
+- (void)onAfterMainDisplaySurfaceRecreate;
+- (void)onFrameResolved;
+
+- (void)didBecomeActive:(NSNotification*)notification;
+- (void)willResignActive:(NSNotification*)notification;
+- (void)didEnterBackground:(NSNotification*)notification;
+- (void)willEnterForeground:(NSNotification*)notification;
+- (void)willTerminate:(NSNotification*)notification;
+@end
diff --git a/UnityLibrary/UnityFramework.framework/Headers/UndefinePlatforms.h b/UnityLibrary/UnityFramework.framework/Headers/UndefinePlatforms.h
new file mode 100644
index 0000000..bcccd31
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Headers/UndefinePlatforms.h
@@ -0,0 +1,123 @@
+// DO NOT PUT #pragma once or include guard check here
+// This header is designed to be able to be included multiple times
+
+// This header is used to temporary undefine all platform definitions in case there is a naming conflict with
+// 3rd party code. Please make sure to always use this paired with the RedefinePlatforms.h header.
+//
+// ex.
+//
+// #include "UndefinePlatforms.h"
+// #include "Some3rdParty.h"
+// #include "RedefinePlatforms.h"
+
+#ifdef DETAIL__PLATFORMS_HAD_BEEN_UNDEFINED_BY_UNDEFINEPLATFORMS_H
+#error "UndefinePlatforms.h has been included more than once or RedefinePlatforms.h is missing."
+#endif
+
+// define all other platforms to 0
+#if PLATFORM_WIN
+ #define DETAIL__TEMP_PLATFORM_WIN_WAS_1
+#endif
+#undef PLATFORM_WIN
+
+#if PLATFORM_OSX
+ #define DETAIL__TEMP_PLATFORM_OSX_WAS_1
+#endif
+#undef PLATFORM_OSX
+
+#if PLATFORM_LINUX
+ #define DETAIL__TEMP_PLATFORM_LINUX_WAS_1
+#endif
+#undef PLATFORM_LINUX
+
+#if PLATFORM_WINRT
+ #define DETAIL__TEMP_PLATFORM_WINRT_WAS_1
+#endif
+#undef PLATFORM_WINRT
+
+#if PLATFORM_FAMILY_WINDOWSGAMES
+ #define DETAIL__TEMP_PLATFORM_FAMILY_WINDOWSGAMES_WAS_1
+#endif
+#undef PLATFORM_FAMILY_WINDOWSGAMES
+
+#if PLATFORM_WEBGL
+ #define DETAIL__TEMP_PLATFORM_WEBGL_WAS_1
+#endif
+#undef PLATFORM_WEBGL
+
+#if PLATFORM_WASI
+ #define DETAIL__TEMP_PLATFORM_WASI_WAS_1
+#endif
+#undef PLATFORM_WASI
+
+#if PLATFORM_ANDROID
+ #define DETAIL__TEMP_PLATFORM_ANDROID_WAS_1
+#endif
+#undef PLATFORM_ANDROID
+
+#if PLATFORM_PS4
+ #define DETAIL__TEMP_PLATFORM_PS4_WAS_1
+#endif
+#undef PLATFORM_PS4
+
+#if PLATFORM_PS5
+ #define DETAIL__TEMP_PLATFORM_PS5_WAS_1
+#endif
+#undef PLATFORM_PS5
+
+#if PLATFORM_IPHONE
+ #define DETAIL__TEMP_PLATFORM_IPHONE_WAS_1
+#endif
+#undef PLATFORM_IPHONE
+
+#if PLATFORM_IOS
+ #define DETAIL__TEMP_PLATFORM_IOS_WAS_1
+#endif
+#undef PLATFORM_IOS
+
+#if PLATFORM_TVOS
+ #define DETAIL__TEMP_PLATFORM_TVOS_WAS_1
+#endif
+#undef PLATFORM_TVOS
+
+#if PLATFORM_VISIONOS
+#define DETAIL__TEMP_PLATFORM_VISIONOS_WAS_1
+#endif
+#undef PLATFORM_VISIONOS
+
+#if PLATFORM_XBOXONE
+ #define DETAIL__TEMP_PLATFORM_XBOXONE_WAS_1
+#endif
+#undef PLATFORM_XBOXONE
+
+#if PLATFORM_SWITCH
+ #define DETAIL__TEMP_PLATFORM_SWITCH_WAS_1
+#endif
+#undef PLATFORM_SWITCH
+
+#if PLATFORM_LUMIN
+ #define DETAIL__TEMP_PLATFORM_LUMIN_WAS_1
+#endif
+#undef PLATFORM_LUMIN
+
+#if PLATFORM_STADIA
+ #define DETAIL__TEMP_PLATFORM_STADIA_WAS_1
+#endif
+#undef PLATFORM_STADIA
+
+#if PLATFORM_NETBSD
+ #define DETAIL__TEMP_PLATFORM_NETBSD_WAS_1
+#endif
+#undef PLATFORM_NETBSD
+
+#if PLATFORM_EMBEDDED_LINUX
+ #define DETAIL__TEMP_PLATFORM_EMBEDDED_LINUX_WAS_1
+#endif
+#undef PLATFORM_EMBEDDED_LINUX
+
+#if PLATFORM_QNX
+ #define DETAIL__TEMP_PLATFORM_QNX_WAS_1
+#endif
+#undef PLATFORM_QNX
+
+#define DETAIL__PLATFORMS_HAD_BEEN_UNDEFINED_BY_UNDEFINEPLATFORMS_H
diff --git a/UnityLibrary/UnityFramework.framework/Headers/UnityAppController.h b/UnityLibrary/UnityFramework.framework/Headers/UnityAppController.h
new file mode 100644
index 0000000..6520540
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Headers/UnityAppController.h
@@ -0,0 +1,140 @@
+#pragma once
+
+#import
+
+#include "RenderPluginDelegate.h"
+
+// Edited by https://github.com/juicycleff/flutter-unity-view-widget
+
+// Added by https://github.com/juicycleff/flutter-unity-view-widget
+typedef void(^unitySceneLoadedCallbackType)(const char* name, const int* buildIndex, const bool* isLoaded, const bool* IsValid);
+
+typedef void(^unityMessageCallbackType)(const char* message);
+
+// Added by https://github.com/juicycleff/flutter-unity-view-widget
+@protocol UnityEventListener
+- (void)onSceneLoaded:(NSString *)name buildIndex:(NSInteger *)bIndex loaded:(bool *)isLoaded valid:(bool *)IsValid;
+- (void)onMessage:(NSString *)message;
+@end
+
+@class UnityView;
+@class UnityViewControllerBase;
+@class DisplayConnection;
+
+__attribute__ ((visibility("default")))
+@interface UnityAppController : NSObject
+{
+ UnityView* _unityView;
+ CADisplayLink* _displayLink;
+
+ UIWindow* _window;
+ UIView* _rootView;
+ UIViewController* _rootController;
+ UIViewController* _snapshotViewController;
+
+ DisplayConnection* _mainDisplay;
+
+ // CODE ARCHEOLOGY: we were caching view controllers, both autorotation one and per-fixed-orientation ones
+ // CODE ARCHEOLOGY: we stopped doing this as the performance impact is negligible,
+ // CODE ARCHEOLOGY: yet it introduces corner cases and in general lots of code
+
+#if UNITY_SUPPORT_ROTATION
+ UIInterfaceOrientation _curOrientation;
+#endif
+
+ id _renderDelegate;
+}
+
+// override it to add your render plugin delegate
+- (void)shouldAttachRenderDelegate;
+
+// this one is called at the very end of didFinishLaunchingWithOptions:
+// after views have been created but before initing engine itself
+// override it to register plugins, tweak UI etc
+- (void)preStartUnity;
+
+// this one is called at at the very end of didFinishLaunchingWithOptions:
+// it will start showing unity view and rendering unity content
+- (void)startUnity:(UIApplication*)application;
+
+// this is a part of UIApplicationDelegate protocol starting with ios5
+// setter will be generated empty
+@property (retain, nonatomic) UIWindow* window;
+
+@property (readonly, copy, nonatomic) UnityView* unityView;
+@property (readonly, copy, nonatomic) CADisplayLink* unityDisplayLink;
+
+@property (readonly, copy, nonatomic) UIView* rootView;
+@property (readonly, copy, nonatomic) UIViewController* rootViewController;
+@property (readonly, copy, nonatomic) DisplayConnection* mainDisplay;
+
+#if UNITY_SUPPORT_ROTATION
+@property (readonly, nonatomic) UIInterfaceOrientation interfaceOrientation;
+#endif
+
+@property (nonatomic, retain) id renderDelegate;
+@property (nonatomic, copy) void (^quitHandler)(void);
+@property (nonatomic, copy) void(^unitySceneLoadedHandler)(const char* name, const int* buildIndex, const bool* isLoaded, const bool* IsValid);
+@property (nonatomic, copy) void(^unityMessageHandler)(const char* message);
+@end
+
+// accessing app controller
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern UnityAppController* _UnityAppController;
+extern UnityAppController* GetAppController(void);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+// Put this into mm file with your subclass implementation
+// pass subclass name to define
+
+#define IMPL_APP_CONTROLLER_SUBCLASS(ClassName) \
+@interface ClassName(OverrideAppDelegate) \
+{ \
+} \
++(void)load; \
+@end \
+@implementation ClassName(OverrideAppDelegate) \
++(void)load \
+{ \
+ extern const char* AppControllerClassName; \
+ AppControllerClassName = #ClassName; \
+} \
+@end \
+
+
+// plugins
+
+#define APP_CONTROLLER_RENDER_PLUGIN_METHOD(method) \
+do { \
+ id delegate = GetAppController().renderDelegate; \
+ if([delegate respondsToSelector:@selector(method)]) \
+ [delegate method]; \
+} while(0)
+
+#define APP_CONTROLLER_RENDER_PLUGIN_METHOD_ARG(method, arg) \
+do { \
+ id delegate = GetAppController().renderDelegate; \
+ if([delegate respondsToSelector:@selector(method:)]) \
+ [delegate method:arg]; \
+} while(0)
+
+
+// these are simple wrappers about ios api, added for convenience
+void AppController_SendNotification(NSString* name);
+void AppController_SendNotificationWithArg(NSString* name, id arg);
+
+void AppController_SendUnityViewControllerNotification(NSString* name);
+
+// in the case when apple adds new api that has easy fallback path for old ios
+// we will add new api methods at runtime on older ios, so we can switch to new api universally
+// in that case we still need actual declaration: we will do it here as it is the most convenient place
+
+// history:
+// [CADisplayLink preferredFramesPerSecond], [UIScreen maximumFramesPerSecond], [UIView safeAreaInsets]
+// were removed after we started to enforce xcode9 (sdk 11)
diff --git a/UnityLibrary/UnityFramework.framework/Headers/UnityFramework.h b/UnityLibrary/UnityFramework.framework/Headers/UnityFramework.h
new file mode 100644
index 0000000..82ed840
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Headers/UnityFramework.h
@@ -0,0 +1,67 @@
+#import
+#import
+
+#import
+
+// this is coming from mach-o/ldsyms.h
+// we were including this header header here directly
+
+// alas we were including directly in UnityFramework.h (for mach_header definition)
+// instead of doing forward declaration and using, say, void pointers in unity c-interface
+// and this resulted in code in the wild that uses _mh_execute_header directly without this include
+// now, with C++/ObjC++ modules support we end up in a funny situation,
+// where we need to include UndefinePlatforms/RedefinePlatforms quoted which gives a warning
+// thankfully, we can easily provide the definition of _mh_execute_header ourselves
+
+typedef struct mach_header_64 MachHeader;
+extern const struct mach_header_64 _mh_execute_header;
+
+//! Project version number for UnityFramework.
+FOUNDATION_EXPORT double UnityFrameworkVersionNumber;
+
+//! Project version string for UnityFramework.
+FOUNDATION_EXPORT const unsigned char UnityFrameworkVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+#pragma once
+
+// important app life-cycle events
+__attribute__ ((visibility("default")))
+@protocol UnityFrameworkListener
+@optional
+- (void)unityDidUnload:(NSNotification*)notification;
+- (void)unityDidQuit:(NSNotification*)notification;
+@end
+
+__attribute__ ((visibility("default")))
+@interface UnityFramework : NSObject
+{
+}
+
+- (UnityAppController*)appController;
+
+- (UITextField*)keyboardTextField;
+
++ (UnityFramework*)getInstance;
+
+- (void)setDataBundleId:(const char*)bundleId;
+
+- (void)runUIApplicationMainWithArgc:(int)argc argv:(char*[])argv;
+- (void)runEmbeddedWithArgc:(int)argc argv:(char*[])argv appLaunchOpts:(NSDictionary*)appLaunchOpts;
+
+- (void)unloadApplication;
+- (void)quitApplication:(int)exitCode;
+
+- (void)registerFrameworkListener:(id)obj;
+- (void)unregisterFrameworkListener:(id)obj;
+
+- (void)showUnityWindow;
+- (void)pause:(bool)pause;
+
+- (void)setAbsoluteURL:(const char *)url;
+
+- (void)setExecuteHeader:(const MachHeader*)header;
+- (void)sendMessageToGOWithName:(const char*)goName functionName:(const char*)name message:(const char*)msg;
+
+@end
diff --git a/UnityLibrary/UnityFramework.framework/Info.plist b/UnityLibrary/UnityFramework.framework/Info.plist
new file mode 100644
index 0000000..08fbcce
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/Info.plist differ
diff --git a/UnityLibrary/UnityFramework.framework/Modules/module.modulemap b/UnityLibrary/UnityFramework.framework/Modules/module.modulemap
new file mode 100644
index 0000000..7657362
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module UnityFramework {
+ umbrella header "UnityFramework.h"
+ export *
+
+ module * { export * }
+}
diff --git a/UnityLibrary/UnityFramework.framework/PrivacyInfo.xcprivacy b/UnityLibrary/UnityFramework.framework/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000..3223a85
--- /dev/null
+++ b/UnityLibrary/UnityFramework.framework/PrivacyInfo.xcprivacy
@@ -0,0 +1,41 @@
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryDiskSpace
+ NSPrivacyAccessedAPITypeReasons
+
+ E174.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ 0A2A.1
+ C617.1
+
+
+
+
+
diff --git a/UnityLibrary/UnityFramework.framework/UnityFramework b/UnityLibrary/UnityFramework.framework/UnityFramework
new file mode 100755
index 0000000..8de23c8
Binary files /dev/null and b/UnityLibrary/UnityFramework.framework/UnityFramework differ
diff --git a/UnityLibrary/UnityFramework.podspec b/UnityLibrary/UnityFramework.podspec
new file mode 100644
index 0000000..f70f932
--- /dev/null
+++ b/UnityLibrary/UnityFramework.podspec
@@ -0,0 +1,55 @@
+Pod::Spec.new do |s|
+ s.name = 'UnityFramework'
+ s.version = '1.0.0'
+ s.summary = 'Local Unity iOS Framework'
+ s.description = 'Local development pod for Unity iOS export.'
+ s.homepage = 'http://localhost'
+ s.license = { :type => 'MIT' }
+ s.author = { 'dev' => 'dev@local' }
+
+ # Unity iOS 工程路径
+ s.source = { :path => '.' }
+
+ # iOS 13 起
+ s.platform = :ios, '13.0'
+
+ # UnityFramework.framework
+ s.vendored_frameworks = 'UnityFramework.framework'
+
+ # 注意:Data 在 framework 内部,会自动包含
+ # 如需额外资源可在此添加
+
+ # 保留所有符号
+ s.preserve_paths = [
+ 'UnityFramework.framework'
+ ]
+
+ # 链接依赖
+ s.frameworks = [
+ 'ARKit', 'AVFoundation', 'AudioToolbox', 'CoreGraphics',
+ 'CoreMedia', 'CoreMotion', 'CoreVideo', 'GameController',
+ 'Metal', 'OpenGLES', 'QuartzCore', 'UIKit', 'WebKit',
+ 'Security', 'MobileCoreServices'
+ ]
+
+ s.libraries = 'z', 'c++'
+
+ # 允许非模块化头
+ s.pod_target_xcconfig = {
+ 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
+ 'ENABLE_BITCODE' => 'NO',
+ # 模拟器排除 arm64(当 framework 不包含模拟器架构时)
+ 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'
+ }
+
+ s.user_target_xcconfig = {
+ 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'
+ }
+
+ # 如需同时支持真机和模拟器,请:
+ # 1. 从 Unity 导出模拟器版本的 framework
+ # 2. 使用 lipo 合并:
+ # lipo -create Device/UnityFramework Simulator/UnityFramework -output UnityFramework
+ # 3. 然后移除上面的 EXCLUDED_ARCHS 配置
+end
+