From 71d1542d6c1767520a75323db7cb2bbbe055a1e4 Mon Sep 17 00:00:00 2001 From: yomunsam Date: Fri, 12 Jul 2019 00:09:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=96=B5=E4=BA=86=E4=B8=AA=E5=8F=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/----.md | 10 + .github/ISSUE_TEMPLATE/--bug.md | 18 + .github/ISSUE_TEMPLATE/bug-report.md | 18 + .gitignore | 53 + Assets/Resources.meta | 8 + Assets/Resources/TinaX.meta | 8 + Assets/Resources/TinaX/Config.meta | 8 + Assets/Resources/TinaX/Config/i18n.asset | 18 + Assets/Resources/TinaX/Config/i18n.asset.meta | 8 + .../TinaX/Config/tinax_base_config.asset | 19 + .../TinaX/Config/tinax_base_config.asset.meta | 8 + .../Resources/TinaX/Config/tinax_config.asset | 18 + .../TinaX/Config/tinax_config.asset.meta | 8 + Assets/Resources/TinaX/Config/uikit.asset | 29 + .../Resources/TinaX/Config/uikit.asset.meta | 8 + Assets/Resources/TinaX/Config/upgrade.asset | 19 + .../Resources/TinaX/Config/upgrade.asset.meta | 8 + Assets/Resources/TinaX/Config/vfs.asset | 24 + Assets/Resources/TinaX/Config/vfs.asset.meta | 8 + Assets/TinaX.meta | 8 + Assets/TinaX/Core.meta | 8 + Assets/TinaX/Core/Assembly.meta | 8 + Assets/TinaX/Core/Assembly/Config.meta | 8 + Assets/TinaX/Core/Assembly/Config/Config.cs | 135 + .../TinaX/Core/Assembly/Config/Config.cs.meta | 11 + Assets/TinaX/Core/Assembly/Encry.meta | 8 + Assets/TinaX/Core/Assembly/Encry/Encry.cs | 32 + .../TinaX/Core/Assembly/Encry/Encry.cs.meta | 11 + Assets/TinaX/Core/Assembly/IO.meta | 8 + Assets/TinaX/Core/Assembly/IO/XFile.cs | 44 + Assets/TinaX/Core/Assembly/IO/XFile.cs.meta | 11 + Assets/TinaX/Core/Assembly/IO/XFolder.cs | 18 + Assets/TinaX/Core/Assembly/IO/XFolder.cs.meta | 11 + Assets/TinaX/Core/Assembly/Platform.meta | 8 + .../TinaX/Core/Assembly/Platform/Platform.cs | 133 + .../Core/Assembly/Platform/Platform.cs.meta | 11 + Assets/TinaX/Core/Assembly/TinaXUtil.meta | 8 + .../TinaX/Core/Assembly/TinaXUtil/msgbox.meta | 8 + .../Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs | 154 + .../TinaXUtil/msgbox/TinaXMsgbox.cs.meta | 11 + Assets/TinaX/Core/Config.meta | 8 + Assets/TinaX/Core/Config/ConfigPath.cs | 161 + Assets/TinaX/Core/Config/ConfigPath.cs.meta | 11 + Assets/TinaX/Core/ConfigModel.meta | 8 + Assets/TinaX/Core/ConfigModel/MainConfig.cs | 68 + .../TinaX/Core/ConfigModel/MainConfig.cs.meta | 11 + Assets/TinaX/Core/ConfigModel/XBaseConfig.cs | 42 + .../Core/ConfigModel/XBaseConfig.cs.meta | 11 + Assets/TinaX/Core/Const.meta | 8 + Assets/TinaX/Core/Const/AssetSystemConst.cs | 18 + .../TinaX/Core/Const/AssetSystemConst.cs.meta | 11 + Assets/TinaX/Core/Const/EventDefine.cs | 13 + Assets/TinaX/Core/Const/EventDefine.cs.meta | 11 + Assets/TinaX/Core/Const/PlatformConst.cs | 91 + Assets/TinaX/Core/Const/PlatformConst.cs.meta | 11 + Assets/TinaX/Core/Const/SharpDefineConst.cs | 16 + .../TinaX/Core/Const/SharpDefineConst.cs.meta | 11 + Assets/TinaX/Core/Core.meta | 8 + Assets/TinaX/Core/Core/XApp.cs | 75 + Assets/TinaX/Core/Core/XApp.cs.meta | 11 + Assets/TinaX/Core/Core/XBootstrap.cs | 28 + Assets/TinaX/Core/Core/XBootstrap.cs.meta | 11 + Assets/TinaX/Core/Core/XCore.cs | 258 + Assets/TinaX/Core/Core/XCore.cs.meta | 11 + Assets/TinaX/Core/Core/XStart.cs | 46 + Assets/TinaX/Core/Core/XStart.cs.meta | 11 + Assets/TinaX/Core/EditorExt.meta | 8 + Assets/TinaX/Core/EditorExt/StyleDefine.meta | 8 + .../StyleDefine/XEditorStyleDefine.cs | 66 + .../StyleDefine/XEditorStyleDefine.cs.meta | 11 + Assets/TinaX/Core/Extend.meta | 8 + Assets/TinaX/Core/Extend/DotNet.meta | 8 + Assets/TinaX/Core/Extend/DotNet/String.meta | 8 + .../Core/Extend/DotNet/String/StringExt.cs | 92 + .../Extend/DotNet/String/StringExt.cs.meta | 11 + .../Core/Extend/DotNet/String/StringHelper.cs | 33 + .../Extend/DotNet/String/StringHelper.cs.meta | 11 + Assets/TinaX/Core/Extend/UnityEngine.meta | 8 + .../TinaX/Core/Extend/UnityEngine/Enum.meta | 8 + .../Core/Extend/UnityEngine/Enum/Editor.meta | 8 + .../Enum/Editor/EnumLabelDrawer.cs | 36 + .../Enum/Editor/EnumLabelDrawer.cs.meta | 11 + .../UnityEngine/Enum/EnumLabelAttribute.cs | 19 + .../Enum/EnumLabelAttribute.cs.meta | 11 + .../Core/Extend/UnityEngine/GameObject.meta | 8 + .../UnityEngine/GameObject/GameObjectExt.cs | 219 + .../GameObject/GameObjectExt.cs.meta | 11 + .../GameObject/GameObjectHelper.cs | 22 + .../GameObject/GameObjectHelper.cs.meta | 11 + Assets/TinaX/Core/Setup.meta | 8 + Assets/TinaX/Core/Setup/FrameworkInfo.cs | 30 + Assets/TinaX/Core/Setup/FrameworkInfo.cs.meta | 11 + Assets/TinaX/Core/Setup/Setup.cs | 62 + Assets/TinaX/Core/Setup/Setup.cs.meta | 11 + Assets/TinaX/Core/System.meta | 8 + Assets/TinaX/Core/System/Event.meta | 8 + Assets/TinaX/Core/System/Event/Event.cs | 199 + Assets/TinaX/Core/System/Event/Event.cs.meta | 11 + Assets/TinaX/Core/System/I18N.meta | 8 + Assets/TinaX/Core/System/I18N/Config.meta | 8 + .../Core/System/I18N/Config/I18NConfig.cs | 124 + .../System/I18N/Config/I18NConfig.cs.meta | 11 + Assets/TinaX/Core/System/I18N/Editor.meta | 8 + .../TinaX/Core/System/I18N/Editor/Script.meta | 8 + .../I18N/Editor/Script/XI18NCacheEditor.cs | 309 + .../Editor/Script/XI18NCacheEditor.cs.meta | 11 + Assets/TinaX/Core/System/I18N/Script.meta | 8 + .../TinaX/Core/System/I18N/Script/I18NCat.cs | 36 + .../Core/System/I18N/Script/I18NCat.cs.meta | 11 + .../Core/System/I18N/Script/I18NJsonTpl.cs | 20 + .../System/I18N/Script/I18NJsonTpl.cs.meta | 11 + .../TinaX/Core/System/I18N/Script/IXI18N.cs | 28 + .../Core/System/I18N/Script/IXI18N.cs.meta | 11 + .../TinaX/Core/System/I18N/Script/XI18NMgr.cs | 199 + .../Core/System/I18N/Script/XI18NMgr.cs.meta | 11 + Assets/TinaX/Core/System/Logger.meta | 8 + Assets/TinaX/Core/System/Logger/Config.meta | 8 + .../Core/System/Logger/Config/LogConfig.cs | 13 + .../System/Logger/Config/LogConfig.cs.meta | 11 + Assets/TinaX/Core/System/Logger/Script.meta | 8 + .../TinaX/Core/System/Logger/Script/XLog.cs | 120 + .../Core/System/Logger/Script/XLog.cs.meta | 11 + Assets/TinaX/Core/System/Lua.meta | 8 + Assets/TinaX/Core/System/Lua/Config.meta | 8 + .../TinaX/Core/System/Lua/Config/LuaConfig.cs | 79 + .../Core/System/Lua/Config/LuaConfig.cs.meta | 11 + Assets/TinaX/Core/System/Lua/Editor.meta | 8 + .../Core/System/Lua/Editor/LuaBuildConst.cs | 177 + .../System/Lua/Editor/LuaBuildConst.cs.meta | 11 + Assets/TinaX/Core/System/Lua/Script.meta | 8 + .../TinaX/Core/System/Lua/Script/ILuaMgr.cs | 55 + .../Core/System/Lua/Script/ILuaMgr.cs.meta | 11 + .../Core/System/Lua/Script/LuaBehaviour.cs | 347 + .../System/Lua/Script/LuaBehaviour.cs.meta | 11 + .../Lua/Script/LuaBehaviourBindEditor.cs | 111 + .../Lua/Script/LuaBehaviourBindEditor.cs.meta | 11 + Assets/TinaX/Core/System/Lua/Script/LuaCat.cs | 41 + .../Core/System/Lua/Script/LuaCat.cs.meta | 11 + .../Core/System/Lua/Script/LuaManager.cs | 261 + .../Core/System/Lua/Script/LuaManager.cs.meta | 11 + Assets/TinaX/Core/System/Scene.meta | 8 + .../TinaX/Core/System/Scene/ISceneManager.cs | 84 + .../Core/System/Scene/ISceneManager.cs.meta | 11 + Assets/TinaX/Core/System/Scene/SceneMgr.cs | 19 + .../TinaX/Core/System/Scene/SceneMgr.cs.meta | 11 + .../TinaX/Core/System/Scene/SceneProvide.cs | 26 + .../Core/System/Scene/SceneProvide.cs.meta | 11 + .../TinaX/Core/System/Scene/XSceneManager.cs | 396 + .../Core/System/Scene/XSceneManager.cs.meta | 11 + Assets/TinaX/Core/System/ServiceRegister.cs | 36 + .../TinaX/Core/System/ServiceRegister.cs.meta | 11 + Assets/TinaX/Core/System/Sound.meta | 8 + Assets/TinaX/Core/System/Sound/Const.meta | 8 + .../Core/System/Sound/Const/XSoundConst.cs | 9 + .../System/Sound/Const/XSoundConst.cs.meta | 11 + Assets/TinaX/Core/System/Sound/Nodes.meta | 8 + .../TinaX/Core/System/Sound/Nodes/Editor.meta | 8 + .../Sound/Nodes/Editor/SoundClipGraphEdit.cs | 66 + .../Nodes/Editor/SoundClipGraphEdit.cs.meta | 11 + .../Core/System/Sound/Nodes/SoundClipGraph.cs | 19 + .../System/Sound/Nodes/SoundClipGraph.cs.meta | 11 + .../System/Sound/Nodes/SoundClipResNode.cs | 25 + .../Sound/Nodes/SoundClipResNode.cs.meta | 11 + .../System/Sound/Nodes/SoundCommonNode.cs | 128 + .../Sound/Nodes/SoundCommonNode.cs.meta | 11 + Assets/TinaX/Core/System/Sound/Script.meta | 8 + .../Core/System/Sound/Script/ISoundTrack.cs | 95 + .../System/Sound/Script/ISoundTrack.cs.meta | 11 + .../TinaX/Core/System/Sound/Script/IXSound.cs | 36 + .../Core/System/Sound/Script/IXSound.cs.meta | 11 + .../System/Sound/Script/SmartAudioClip.cs | 23 + .../Sound/Script/SmartAudioClip.cs.meta | 11 + .../Core/System/Sound/Script/SoundCat.cs | 34 + .../Core/System/Sound/Script/SoundCat.cs.meta | 11 + .../Core/System/Sound/Script/SoundTrack.cs | 449 + .../System/Sound/Script/SoundTrack.cs.meta | 11 + .../Core/System/Sound/Script/XSoundMgr.cs | 78 + .../System/Sound/Script/XSoundMgr.cs.meta | 11 + Assets/TinaX/Core/System/TaskManager.meta | 8 + Assets/TinaX/Core/System/TaskManager/Cat.meta | 8 + .../Core/System/TaskManager/Cat/TaskMgrCat.cs | 33 + .../System/TaskManager/Cat/TaskMgrCat.cs.meta | 11 + .../Core/System/TaskManager/Interface.meta | 8 + .../TaskManager/Interface/ITaskManager.cs | 20 + .../Interface/ITaskManager.cs.meta | 11 + .../TinaX/Core/System/TaskManager/Script.meta | 8 + .../System/TaskManager/Script/CoroutineMgr.cs | 20 + .../TaskManager/Script/CoroutineMgr.cs.meta | 11 + .../System/TaskManager/Script/TaskManager.cs | 52 + .../TaskManager/Script/TaskManager.cs.meta | 11 + Assets/TinaX/Core/System/TimeMachine.meta | 8 + .../Core/System/TimeMachine/ITimeMachine.cs | 66 + .../System/TimeMachine/ITimeMachine.cs.meta | 11 + .../TimeMachine/TimeMachineBehaviour.cs | 404 + .../TimeMachine/TimeMachineBehaviour.cs.meta | 11 + .../System/TimeMachine/TimeMachineProvide.cs | 37 + .../TimeMachine/TimeMachineProvide.cs.meta | 11 + .../Core/System/TimeMachine/XTimeMachine.cs | 68 + .../System/TimeMachine/XTimeMachine.cs.meta | 11 + Assets/TinaX/Core/System/UIKit.meta | 8 + Assets/TinaX/Core/System/UIKit/Config.meta | 8 + .../Core/System/UIKit/Config/UIGroupConf.cs | 91 + .../System/UIKit/Config/UIGroupConf.cs.meta | 11 + .../Core/System/UIKit/Config/UIKitConfig.cs | 187 + .../System/UIKit/Config/UIKitConfig.cs.meta | 11 + Assets/TinaX/Core/System/UIKit/Const.meta | 8 + .../Core/System/UIKit/Const/UIKitConst.cs | 19 + .../System/UIKit/Const/UIKitConst.cs.meta | 11 + Assets/TinaX/Core/System/UIKit/Editor.meta | 8 + .../System/UIKit/Editor/ProjectSetting.meta | 8 + .../Editor/ProjectSetting/PSUIKitConfig.cs | 81 + .../ProjectSetting/PSUIKitConfig.cs.meta | 11 + .../Core/System/UIKit/Editor/UIEditTools.meta | 8 + .../UIKit/Editor/UIEditTools/UIBaseEdit.cs | 21 + .../Editor/UIEditTools/UIBaseEdit.cs.meta | 11 + .../Editor/UIEditTools/UIComponentEdit.meta | 8 + .../UIComponentEdit/XButtonEdit.cs | 85 + .../UIComponentEdit/XButtonEdit.cs.meta | 11 + .../UIEditTools/UIComponentEdit/XTextEdit.cs | 100 + .../UIComponentEdit/XTextEdit.cs.meta | 11 + .../Editor/UIEditTools/UICustomChange.cs | 8 + .../Editor/UIEditTools/UICustomChange.cs.meta | 11 + .../UIKit/Editor/UIEditTools/UIEntityEdit.cs | 34 + .../Editor/UIEditTools/UIEntityEdit.cs.meta | 11 + .../Editor/UIEditTools/UIKitEditHelper.cs | 31 + .../UIEditTools/UIKitEditHelper.cs.meta | 11 + .../Core/System/UIKit/Editor/UIKitEditor.cs | 44 + .../System/UIKit/Editor/UIKitEditor.cs.meta | 11 + .../Core/System/UIKit/Editor/UISelect.cs | 61 + .../Core/System/UIKit/Editor/UISelect.cs.meta | 11 + .../Core/System/UIKit/Editor/XUIKitMenus.cs | 174 + .../System/UIKit/Editor/XUIKitMenus.cs.meta | 11 + Assets/TinaX/Core/System/UIKit/Script.meta | 8 + .../Core/System/UIKit/Script/IUIEntity.cs | 74 + .../System/UIKit/Script/IUIEntity.cs.meta | 11 + .../TinaX/Core/System/UIKit/Script/IUIMgr.cs | 217 + .../Core/System/UIKit/Script/IUIMgr.cs.meta | 11 + .../TinaX/Core/System/UIKit/Script/UIBase.cs | 190 + .../Core/System/UIKit/Script/UIBase.cs.meta | 11 + .../Core/System/UIKit/Script/UIBaseSafer.cs | 37 + .../System/UIKit/Script/UIBaseSafer.cs.meta | 11 + .../System/UIKit/Script/UIComponents.meta | 8 + .../UIKit/Script/UIComponents/XButton.cs | 61 + .../UIKit/Script/UIComponents/XButton.cs.meta | 11 + .../UIKit/Script/UIComponents/XImage.cs | 91 + .../UIKit/Script/UIComponents/XImage.cs.meta | 11 + .../System/UIKit/Script/UIComponents/XText.cs | 103 + .../UIKit/Script/UIComponents/XText.cs.meta | 11 + .../UIKit/Script/UIComponents/XUISafeArea.cs | 100 + .../Script/UIComponents/XUISafeArea.cs.meta | 11 + .../Core/System/UIKit/Script/UIEntity.cs | 318 + .../Core/System/UIKit/Script/UIEntity.cs.meta | 11 + .../Core/System/UIKit/Script/UIProvide.cs | 37 + .../System/UIKit/Script/UIProvide.cs.meta | 11 + .../Core/System/UIKit/Script/UISafeArea.meta | 8 + .../UIKit/Script/UISafeArea/XUISafeAreaMgr.cs | 113 + .../Script/UISafeArea/XUISafeAreaMgr.cs.meta | 11 + .../Script/UISafeArea/XUISafeAreaModel.cs | 126 + .../UISafeArea/XUISafeAreaModel.cs.meta | 11 + .../Core/System/UIKit/Script/XUIManager.cs | 329 + .../System/UIKit/Script/XUIManager.cs.meta | 11 + .../Core/System/UIKit/Script/XUIManagerAdv.cs | 321 + .../System/UIKit/Script/XUIManagerAdv.cs.meta | 11 + .../Core/System/UIKit/Script/XUIMgrGateway.cs | 952 ++ .../System/UIKit/Script/XUIMgrGateway.cs.meta | 11 + Assets/TinaX/Core/System/Upgrade.meta | 8 + Assets/TinaX/Core/System/Upgrade/Config.meta | 8 + .../System/Upgrade/Config/UpgradeConfig.cs | 153 + .../Upgrade/Config/UpgradeConfig.cs.meta | 11 + Assets/TinaX/Core/System/Upgrade/Const.meta | 8 + .../System/Upgrade/Const/UpgradeLanguage.cs | 253 + .../Upgrade/Const/UpgradeLanguage.cs.meta | 11 + Assets/TinaX/Core/System/Upgrade/JsonTPL.meta | 8 + .../Upgrade/JsonTPL/LocalVersionInfo.cs | 17 + .../Upgrade/JsonTPL/LocalVersionInfo.cs.meta | 11 + .../JsonTPL/StaticUpgradeConfigJsonTpl.cs | 249 + .../StaticUpgradeConfigJsonTpl.cs.meta | 11 + Assets/TinaX/Core/System/Upgrade/Script.meta | 8 + .../System/Upgrade/Script/UpdateScreen.cs | 13 + .../Upgrade/Script/UpdateScreen.cs.meta | 11 + .../Upgrade/Script/UpgradeHandleStaticWeb.cs | 203 + .../Script/UpgradeHandleStaticWeb.cs.meta | 11 + .../Core/System/Upgrade/Script/UpgradeMgr.cs | 635 ++ .../System/Upgrade/Script/UpgradeMgr.cs.meta | 11 + .../TinaX/Core/System/Upgrade/UIScript.meta | 8 + .../System/Upgrade/UIScript/AutoUpgradeUI.cs | 202 + .../Upgrade/UIScript/AutoUpgradeUI.cs.meta | 11 + Assets/TinaX/Core/System/VFS.meta | 8 + Assets/TinaX/Core/System/VFS/ConfigModel.meta | 8 + .../System/VFS/ConfigModel/VFSConfigModel.cs | 239 + .../VFS/ConfigModel/VFSConfigModel.cs.meta | 11 + Assets/TinaX/Core/System/VFS/Const.meta | 8 + .../Core/System/VFS/Const/AssetRuleConst.cs | 91 + .../System/VFS/Const/AssetRuleConst.cs.meta | 11 + .../Core/System/VFS/Const/UpdateConst.cs | 15 + .../Core/System/VFS/Const/UpdateConst.cs.meta | 11 + .../System/VFS/Const/UpdateScreenString.cs | 109 + .../VFS/Const/UpdateScreenString.cs.meta | 11 + Assets/TinaX/Core/System/VFS/Editor.meta | 8 + .../System/VFS/Editor/AssetInputHandle.cs | 237 + .../VFS/Editor/AssetInputHandle.cs.meta | 11 + .../System/VFS/Editor/AssetLoadedDebugPad.cs | 109 + .../VFS/Editor/AssetLoadedDebugPad.cs.meta | 11 + .../System/VFS/Editor/ProjectSetting.meta | 8 + .../VFS/Editor/ProjectSetting/PSVFSConfig.cs | 111 + .../Editor/ProjectSetting/PSVFSConfig.cs.meta | 11 + Assets/TinaX/Core/System/VFS/Enum.meta | 8 + .../Core/System/VFS/Enum/EnumUpgradeCommon.cs | 39 + .../System/VFS/Enum/EnumUpgradeCommon.cs.meta | 11 + Assets/TinaX/Core/System/VFS/Script.meta | 8 + .../Core/System/VFS/Script/AssetParse.cs | 391 + .../Core/System/VFS/Script/AssetParse.cs.meta | 11 + .../Core/System/VFS/Script/AssetsProvide.cs | 40 + .../System/VFS/Script/AssetsProvide.cs.meta | 11 + .../Core/System/VFS/Script/IAssetsManager.cs | 58 + .../System/VFS/Script/IAssetsManager.cs.meta | 11 + .../Core/System/VFS/Script/VFSConfigCache.cs | 84 + .../System/VFS/Script/VFSConfigCache.cs.meta | 11 + .../Core/System/VFS/Script/XAssetBundleMgr.cs | 790 ++ .../System/VFS/Script/XAssetBundleMgr.cs.meta | 11 + .../Core/System/VFS/Script/XAssetsManager.cs | 322 + .../System/VFS/Script/XAssetsManager.cs.meta | 11 + Assets/TinaX/Editor.meta | 8 + Assets/TinaX/Editor/Config.meta | 8 + Assets/TinaX/Editor/Config/ConfigMenu.cs | 50 + Assets/TinaX/Editor/Config/ConfigMenu.cs.meta | 11 + Assets/TinaX/Editor/IO.meta | 8 + Assets/TinaX/Editor/IO/Folder.cs | 45 + Assets/TinaX/Editor/IO/Folder.cs.meta | 11 + Assets/TinaX/Editor/IO/Path.cs | 24 + Assets/TinaX/Editor/IO/Path.cs.meta | 11 + Assets/TinaX/Editor/Res.meta | 8 + Assets/TinaX/Editor/Res/icon.meta | 8 + Assets/TinaX/Editor/Res/icon/cat.png | Bin 0 -> 23155 bytes Assets/TinaX/Editor/Res/icon/cat.png.meta | 110 + Assets/TinaX/Editor/Res/icon/dialog.png | Bin 0 -> 31821 bytes Assets/TinaX/Editor/Res/icon/dialog.png.meta | 132 + Assets/TinaX/Editor/Res/icon/lua.png | Bin 0 -> 6674 bytes Assets/TinaX/Editor/Res/icon/lua.png.meta | 110 + Assets/TinaX/Editor/Res/icon/pawprint.png | Bin 0 -> 17244 bytes .../TinaX/Editor/Res/icon/pawprint.png.meta | 110 + Assets/TinaX/Editor/Res/icon/set.png | Bin 0 -> 17626 bytes Assets/TinaX/Editor/Res/icon/set.png.meta | 132 + Assets/TinaX/Editor/Res/icon/setup.png | Bin 0 -> 20078 bytes Assets/TinaX/Editor/Res/icon/setup.png.meta | 110 + Assets/TinaX/Editor/Res/icon/uiedit.png | Bin 0 -> 3640 bytes Assets/TinaX/Editor/Res/icon/uiedit.png.meta | 132 + Assets/TinaX/Editor/Res/img.meta | 8 + Assets/TinaX/Editor/Res/img/splash.png | Bin 0 -> 46561 bytes Assets/TinaX/Editor/Res/img/splash.png.meta | 110 + Assets/TinaX/Editor/Setup.meta | 8 + Assets/TinaX/Editor/Setup/FrameworkSetup.cs | 271 + .../TinaX/Editor/Setup/FrameworkSetup.cs.meta | 11 + .../Editor/Setup/SystemInstallRegister.cs | 145 + .../Setup/SystemInstallRegister.cs.meta | 11 + Assets/TinaX/Editor/System.meta | 8 + Assets/TinaX/Editor/System/AssetsPro.meta | 8 + .../TinaX/Editor/System/AssetsPro/Window.meta | 8 + .../System/AssetsPro/Window/ABExplorer.cs | 16 + .../AssetsPro/Window/ABExplorer.cs.meta | 11 + .../System/AssetsPro/Window/ABReader.cs | 274 + .../System/AssetsPro/Window/ABReader.cs.meta | 11 + Assets/TinaX/Editor/System/DevOps.meta | 8 + Assets/TinaX/Editor/System/DevOps/Script.meta | 8 + .../System/DevOps/Script/DevOpsBuild.cs | 31 + .../System/DevOps/Script/DevOpsBuild.cs.meta | 11 + .../DevOps/Script/SharpDefineDefaults.cs | 63 + .../DevOps/Script/SharpDefineDefaults.cs.meta | 11 + .../Script/SharpDefineReadWriteUtils.cs | 66 + .../Script/SharpDefineReadWriteUtils.cs.meta | 11 + Assets/TinaX/Editor/System/DevOps/UI.meta | 8 + .../System/DevOps/UI/DevOpsBuildWindow.cs | 124 + .../DevOps/UI/DevOpsBuildWindow.cs.meta | 11 + .../DevOps/UI/SharpDefineReadWriteWindow.cs | 634 ++ .../UI/SharpDefineReadWriteWindow.cs.meta | 11 + Assets/TinaX/Editor/System/LuaScript.meta | 8 + .../System/LuaScript/ChangeLuaFileExtName.cs | 217 + .../LuaScript/ChangeLuaFileExtName.cs.meta | 11 + Assets/TinaX/Editor/System/VFS.meta | 8 + Assets/TinaX/Editor/System/VFS/JsonModel.meta | 8 + .../VFS/JsonModel/VFSPatchConfigModel.cs | 39 + .../VFS/JsonModel/VFSPatchConfigModel.cs.meta | 11 + .../System/VFS/JsonModel/VFSPatchInfoModel.cs | 49 + .../VFS/JsonModel/VFSPatchInfoModel.cs.meta | 11 + Assets/TinaX/Editor/System/VFS/Script.meta | 8 + .../System/VFS/Script/AssetPackageMgr.cs | 193 + .../System/VFS/Script/AssetPackageMgr.cs.meta | 11 + .../System/VFS/Script/VFSPatchPackage.cs | 334 + .../System/VFS/Script/VFSPatchPackage.cs.meta | 11 + Assets/TinaX/Editor/System/VFS/Windows.meta | 8 + .../System/VFS/Windows/AssetPackageWindow.cs | 94 + .../VFS/Windows/AssetPackageWindow.cs.meta | 11 + .../System/VFS/Windows/VFSFolderMgrWindow.cs | 198 + .../VFS/Windows/VFSFolderMgrWindow.cs.meta | 11 + .../System/VFS/Windows/VFSPatchWindow.cs | 411 + .../System/VFS/Windows/VFSPatchWindow.cs.meta | 11 + Assets/TinaX/Editor/UI.meta | 8 + Assets/TinaX/Editor/UI/AboutTinaX.meta | 8 + .../Editor/UI/AboutTinaX/AboutTinaXUI.cs | 130 + .../Editor/UI/AboutTinaX/AboutTinaXUI.cs.meta | 11 + Assets/TinaX/Editor/UI/ConfWindow.meta | 8 + .../Editor/UI/ConfWindow/TinaXConfWindow.cs | 55 + .../UI/ConfWindow/TinaXConfWindow.cs.meta | 11 + .../UI/ConfWindow/TinaXConfWithoutOdin.cs | 115 + .../ConfWindow/TinaXConfWithoutOdin.cs.meta | 11 + Assets/TinaX/Editor/Vendor.meta | 8 + Assets/TinaX/Editor/Vendor/Core.meta | 8 + .../Editor/Vendor/Core/ToolbarExtender.meta | 8 + .../Vendor/Core/ToolbarExtender/Scripts.meta | 8 + .../Core/ToolbarExtender/Scripts/Editor.meta | 8 + .../Scripts/Editor/ToolbarCallback.cs | 70 + .../Scripts/Editor/ToolbarCallback.cs.meta | 11 + .../Scripts/Editor/ToolbarExtender.cs | 115 + .../Scripts/Editor/ToolbarExtender.cs.meta | 11 + Assets/TinaX/GameKit.meta | 8 + Assets/TinaX/GameKit/DramaDesigner.meta | 8 + .../TinaX/GameKit/DramaDesigner/Common.meta | 8 + .../GameKit/DramaDesigner/Common/Node.meta | 8 + .../Common/Node/NodeAppendString.cs | 64 + .../Common/Node/NodeAppendString.cs.meta | 11 + .../TinaX/GameKit/DramaDesigner/Dialogue.meta | 8 + .../DramaDesigner/Dialogue/Editor.meta | 8 + .../Dialogue/Editor/DialoguePreviewPlayer.cs | 278 + .../Editor/DialoguePreviewPlayer.cs.meta | 11 + .../GameKit/DramaDesigner/Dialogue/Nodes.meta | 8 + .../Dialogue/Nodes/DialogueBaseNode.cs | 44 + .../Dialogue/Nodes/DialogueBaseNode.cs.meta | 11 + .../Dialogue/Nodes/DialogueBluePrint.cs | 196 + .../Dialogue/Nodes/DialogueBluePrint.cs.meta | 11 + .../DramaDesigner/Dialogue/Nodes/Editor.meta | 8 + .../Nodes/Editor/DialogueBluePrintEditor.cs | 55 + .../Editor/DialogueBluePrintEditor.cs.meta | 11 + .../Nodes/Editor/DialogueChooseEditor.cs | 45 + .../Nodes/Editor/DialogueChooseEditor.cs.meta | 11 + .../Nodes/Editor/DialogueContentEditor.cs | 66 + .../Editor/DialogueContentEditor.cs.meta | 11 + .../Nodes/Editor/DialogueStartEditor.cs | 37 + .../Nodes/Editor/DialogueStartEditor.cs.meta | 11 + .../DramaDesigner/Dialogue/Nodes/api.meta | 8 + .../Dialogue/Nodes/api/IDialogChoose.cs | 32 + .../Dialogue/Nodes/api/IDialogChoose.cs.meta | 11 + .../Dialogue/Nodes/api/IDialogContent.cs | 38 + .../Dialogue/Nodes/api/IDialogContent.cs.meta | 11 + .../Dialogue/Nodes/behavior.meta | 8 + .../Dialogue/Nodes/behavior/DialogueChoose.cs | 148 + .../Nodes/behavior/DialogueChoose.cs.meta | 11 + .../Nodes/behavior/DialogueContent.cs | 125 + .../Nodes/behavior/DialogueContent.cs.meta | 11 + .../Dialogue/Nodes/behavior/DialogueFinish.cs | 34 + .../Nodes/behavior/DialogueFinish.cs.meta | 11 + .../Dialogue/Nodes/behavior/DialogueJumpTo.cs | 52 + .../Nodes/behavior/DialogueJumpTo.cs.meta | 11 + .../Dialogue/Nodes/behavior/DialogueKnot.cs | 57 + .../Nodes/behavior/DialogueKnot.cs.meta | 11 + .../Dialogue/Nodes/behavior/DialogueStart.cs | 54 + .../Nodes/behavior/DialogueStart.cs.meta | 11 + .../Dialogue/Nodes/describe.meta | 8 + .../Nodes/describe/DialogueGetString.cs | 53 + .../Nodes/describe/DialogueGetString.cs.meta | 11 + .../DramaDesigner/Dialogue/Script.meta | 8 + .../Dialogue/Script/DialoguePlayer.cs | 161 + .../Dialogue/Script/DialoguePlayer.cs.meta | 11 + .../Dialogue/Script/IDialoguePlayer.cs | 16 + .../Dialogue/Script/IDialoguePlayer.cs.meta | 11 + .../Dialogue/Script/IPlayerForNode.cs | 33 + .../Dialogue/Script/IPlayerForNode.cs.meta | 11 + Assets/TinaX/GameKit/UITools.meta | 8 + Assets/TinaX/GameKit/UITools/PageView.meta | 8 + .../GameKit/UITools/PageView/PageViewMark.cs | 68 + .../UITools/PageView/PageViewMark.cs.meta | 11 + .../GameKit/UITools/PageView/Script.meta | 8 + .../UITools/PageView/Script/XPageView.cs | 297 + .../UITools/PageView/Script/XPageView.cs.meta | 11 + Assets/TinaX/Lua.meta | 8 + Assets/TinaX/Lua/core.meta | 8 + Assets/TinaX/Lua/core/init.lua.txt | 44 + Assets/TinaX/Lua/core/init.lua.txt.meta | 7 + Assets/TinaX/Lua/core/xcore.lua.txt | 18 + Assets/TinaX/Lua/core/xcore.lua.txt.meta | 7 + Assets/TinaX/Lua/debug.meta | 8 + Assets/TinaX/Lua/debug/luaide.meta | 8 + .../TinaX/Lua/debug/luaide/LuaDebug.lua.txt | 2618 +++++ .../Lua/debug/luaide/LuaDebug.lua.txt.meta | 7 + Assets/TinaX/Lua/extend.meta | 8 + Assets/TinaX/Lua/extend/class.lua.txt | 49 + Assets/TinaX/Lua/extend/class.lua.txt.meta | 7 + Assets/TinaX/Lua/extend/logger.lua.txt | 102 + Assets/TinaX/Lua/extend/logger.lua.txt.meta | 7 + Assets/TinaX/Lua/extend/string.lua.txt | 128 + Assets/TinaX/Lua/extend/string.lua.txt.meta | 7 + Assets/TinaX/Lua/extend/table.lua.txt | 145 + Assets/TinaX/Lua/extend/table.lua.txt.meta | 7 + Assets/TinaX/Lua/system.meta | 8 + Assets/TinaX/Lua/system/asset.lua.txt | 23 + Assets/TinaX/Lua/system/asset.lua.txt.meta | 7 + Assets/TinaX/Lua/system/event.lua.txt | 26 + Assets/TinaX/Lua/system/event.lua.txt.meta | 7 + Assets/TinaX/Lua/system/i18n.lua.txt | 11 + Assets/TinaX/Lua/system/i18n.lua.txt.meta | 7 + Assets/TinaX/Lua/system/scene.lua.txt | 72 + Assets/TinaX/Lua/system/scene.lua.txt.meta | 7 + Assets/TinaX/Lua/system/sound.lua.txt | 16 + Assets/TinaX/Lua/system/sound.lua.txt.meta | 7 + Assets/TinaX/Lua/system/uikit.lua.txt | 122 + Assets/TinaX/Lua/system/uikit.lua.txt.meta | 7 + Assets/TinaX/Lua/utils.meta | 8 + Assets/TinaX/Lua/utils/reload.meta | 8 + Assets/TinaX/Lua/utils/reload/reloadutil.txt | 124 + .../Lua/utils/reload/reloadutil.txt.meta | 7 + Assets/TinaX/Resources.meta | 8 + Assets/TinaX/Resources/TinaX.meta | 8 + Assets/TinaX/Resources/TinaX/Common.meta | 8 + .../Resources/TinaX/Common/MsgBox_hor.prefab | 909 ++ .../TinaX/Common/MsgBox_hor.prefab.meta | 7 + .../Resources/TinaX/Common/MsgBox_ver.prefab | 909 ++ .../TinaX/Common/MsgBox_ver.prefab.meta | 7 + Assets/TinaX/Resources/TinaX/Update.meta | 8 + .../TinaX/Update/UpgradeScreen_Hor.prefab | 382 + .../Update/UpgradeScreen_Hor.prefab.meta | 7 + .../TinaX/Update/UpgradeScreen_Ver.prefab | 457 + .../Update/UpgradeScreen_Ver.prefab.meta | 7 + Assets/TinaX/Vendor.meta | 8 + Assets/TinaX/Vendor/Core.meta | 8 + Assets/TinaX/Vendor/Core/CatLib.meta | 8 + .../Vendor/Core/CatLib/CatLib.Core.deps.json | 47 + .../Core/CatLib/CatLib.Core.deps.json.meta | 7 + .../TinaX/Vendor/Core/CatLib/CatLib.Core.dll | Bin 0 -> 141312 bytes .../Vendor/Core/CatLib/CatLib.Core.dll.meta | 32 + .../TinaX/Vendor/Core/CatLib/CatLib.Core.xml | 8833 +++++++++++++++++ .../Vendor/Core/CatLib/CatLib.Core.xml.meta | 7 + .../TinaX/Vendor/Core/CatLib/x_version.json | 5 + .../Vendor/Core/CatLib/x_version.json.meta | 7 + Assets/TinaX/Vendor/Core/JsonDotNet.meta | 8 + .../Vendor/Core/JsonDotNet/Assemblies.meta | 9 + .../Core/JsonDotNet/Assemblies/AOT.meta | 9 + .../Assemblies/AOT/Newtonsoft.Json.XML | 8015 +++++++++++++++ .../Assemblies/AOT/Newtonsoft.Json.XML.meta | 8 + .../Assemblies/AOT/Newtonsoft.Json.dll | Bin 0 -> 399360 bytes .../Assemblies/AOT/Newtonsoft.Json.dll.meta | 126 + .../JsonDotNet/Assemblies/Standalone.meta | 9 + .../Assemblies/Standalone/Newtonsoft.Json.XML | 8040 +++++++++++++++ .../Standalone/Newtonsoft.Json.XML.meta | 8 + .../Assemblies/Standalone/Newtonsoft.Json.dll | Bin 0 -> 404480 bytes .../Standalone/Newtonsoft.Json.dll.meta | 118 + .../Core/JsonDotNet/Assemblies/Windows.meta | 9 + .../Assemblies/Windows/Newtonsoft.Json.XML | 7977 +++++++++++++++ .../Windows/Newtonsoft.Json.XML.meta | 8 + .../Assemblies/Windows/Newtonsoft.Json.dll | Bin 0 -> 426496 bytes .../Windows/Newtonsoft.Json.dll.meta | 106 + .../Vendor/Core/JsonDotNet/Documentation.meta | 9 + .../Json Net for Unity 2.0.1.pdf | Bin 0 -> 409872 bytes .../Json Net for Unity 2.0.1.pdf.meta | 8 + Assets/TinaX/Vendor/Core/JsonDotNet/link.xml | 7 + .../Vendor/Core/JsonDotNet/link.xml.meta | 6 + .../Vendor/Core/JsonDotNet/x_version.json | 5 + .../Core/JsonDotNet/x_version.json.meta | 7 + Assets/TinaX/Vendor/Core/SharpZipLib.meta | 8 + .../TinaX/Vendor/Core/SharpZipLib/BZip2.meta | 8 + .../Vendor/Core/SharpZipLib/BZip2/BZip2.cs | 77 + .../Core/SharpZipLib/BZip2/BZip2.cs.meta | 11 + .../Core/SharpZipLib/BZip2/BZip2Constants.cs | 121 + .../SharpZipLib/BZip2/BZip2Constants.cs.meta | 11 + .../Core/SharpZipLib/BZip2/BZip2Exception.cs | 36 + .../SharpZipLib/BZip2/BZip2Exception.cs.meta | 11 + .../SharpZipLib/BZip2/BZip2InputStream.cs | 1028 ++ .../BZip2/BZip2InputStream.cs.meta | 11 + .../SharpZipLib/BZip2/BZip2OutputStream.cs | 2033 ++++ .../BZip2/BZip2OutputStream.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Checksum.meta | 8 + .../Core/SharpZipLib/Checksum/Adler32.cs | 163 + .../Core/SharpZipLib/Checksum/Adler32.cs.meta | 11 + .../Core/SharpZipLib/Checksum/BZip2Crc.cs | 186 + .../SharpZipLib/Checksum/BZip2Crc.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Checksum/Crc32.cs | 175 + .../Core/SharpZipLib/Checksum/Crc32.cs.meta | 11 + .../Core/SharpZipLib/Checksum/IChecksum.cs | 51 + .../SharpZipLib/Checksum/IChecksum.cs.meta | 11 + .../TinaX/Vendor/Core/SharpZipLib/Core.meta | 8 + .../Core/SharpZipLib/Core/Exceptions.meta | 8 + .../Core/Exceptions/SharpZipBaseException.cs | 40 + .../Exceptions/SharpZipBaseException.cs.meta | 11 + .../Exceptions/StreamDecodingException.cs | 32 + .../StreamDecodingException.cs.meta | 11 + .../Exceptions/StreamUnsupportedException.cs | 31 + .../StreamUnsupportedException.cs.meta | 11 + .../UnexpectedEndOfStreamException.cs | 31 + .../UnexpectedEndOfStreamException.cs.meta | 11 + .../Exceptions/ValueOutOfRangeException.cs | 48 + .../ValueOutOfRangeException.cs.meta | 11 + .../SharpZipLib/Core/FileSystemScanner.cs | 545 + .../Core/FileSystemScanner.cs.meta | 11 + .../Core/SharpZipLib/Core/INameTransform.cs | 22 + .../SharpZipLib/Core/INameTransform.cs.meta | 11 + .../Core/SharpZipLib/Core/IScanFilter.cs | 15 + .../Core/SharpZipLib/Core/IScanFilter.cs.meta | 11 + .../SharpZipLib/Core/InvalidNameException.cs | 35 + .../Core/InvalidNameException.cs.meta | 11 + .../Core/SharpZipLib/Core/NameFilter.cs | 284 + .../Core/SharpZipLib/Core/NameFilter.cs.meta | 11 + .../Core/SharpZipLib/Core/PathFilter.cs | 318 + .../Core/SharpZipLib/Core/PathFilter.cs.meta | 11 + .../Core/SharpZipLib/Core/StreamUtils.cs | 236 + .../Core/SharpZipLib/Core/StreamUtils.cs.meta | 11 + .../Core/SharpZipLib/Core/WindowsPathUtils.cs | 67 + .../SharpZipLib/Core/WindowsPathUtils.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Encryption.meta | 8 + .../SharpZipLib/Encryption/PkzipClassic.cs | 485 + .../Encryption/PkzipClassic.cs.meta | 11 + .../SharpZipLib/Encryption/ZipAESStream.cs | 145 + .../Encryption/ZipAESStream.cs.meta | 11 + .../SharpZipLib/Encryption/ZipAESTransform.cs | 223 + .../Encryption/ZipAESTransform.cs.meta | 11 + .../TinaX/Vendor/Core/SharpZipLib/GZip.meta | 8 + .../Vendor/Core/SharpZipLib/GZip/GZip.cs | 92 + .../Vendor/Core/SharpZipLib/GZip/GZip.cs.meta | 11 + .../Core/SharpZipLib/GZip/GZipConstants.cs | 58 + .../SharpZipLib/GZip/GZipConstants.cs.meta | 11 + .../Core/SharpZipLib/GZip/GZipException.cs | 36 + .../SharpZipLib/GZip/GZipException.cs.meta | 11 + .../Core/SharpZipLib/GZip/GzipInputStream.cs | 389 + .../SharpZipLib/GZip/GzipInputStream.cs.meta | 11 + .../Core/SharpZipLib/GZip/GzipOutputStream.cs | 240 + .../SharpZipLib/GZip/GzipOutputStream.cs.meta | 11 + Assets/TinaX/Vendor/Core/SharpZipLib/Lzw.meta | 8 + .../Core/SharpZipLib/Lzw/LzwConstants.cs | 62 + .../Core/SharpZipLib/Lzw/LzwConstants.cs.meta | 11 + .../Core/SharpZipLib/Lzw/LzwException.cs | 36 + .../Core/SharpZipLib/Lzw/LzwException.cs.meta | 11 + .../Core/SharpZipLib/Lzw/LzwInputStream.cs | 572 ++ .../SharpZipLib/Lzw/LzwInputStream.cs.meta | 11 + Assets/TinaX/Vendor/Core/SharpZipLib/Tar.meta | 8 + .../SharpZipLib/Tar/InvalidHeaderException.cs | 37 + .../Tar/InvalidHeaderException.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Tar/TarArchive.cs | 958 ++ .../Core/SharpZipLib/Tar/TarArchive.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Tar/TarBuffer.cs | 599 ++ .../Core/SharpZipLib/Tar/TarBuffer.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Tar/TarEntry.cs | 547 + .../Core/SharpZipLib/Tar/TarEntry.cs.meta | 11 + .../Core/SharpZipLib/Tar/TarException.cs | 36 + .../Core/SharpZipLib/Tar/TarException.cs.meta | 11 + .../Tar/TarExtendedHeaderReader.cs | 99 + .../Tar/TarExtendedHeaderReader.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Tar/TarHeader.cs | 1161 +++ .../Core/SharpZipLib/Tar/TarHeader.cs.meta | 11 + .../Core/SharpZipLib/Tar/TarInputStream.cs | 726 ++ .../SharpZipLib/Tar/TarInputStream.cs.meta | 11 + .../Core/SharpZipLib/Tar/TarOutputStream.cs | 480 + .../SharpZipLib/Tar/TarOutputStream.cs.meta | 11 + Assets/TinaX/Vendor/Core/SharpZipLib/Zip.meta | 8 + .../Core/SharpZipLib/Zip/Compression.meta | 8 + .../SharpZipLib/Zip/Compression/Deflater.cs | 604 ++ .../Zip/Compression/Deflater.cs.meta | 11 + .../Zip/Compression/DeflaterConstants.cs | 145 + .../Zip/Compression/DeflaterConstants.cs.meta | 11 + .../Zip/Compression/DeflaterEngine.cs | 946 ++ .../Zip/Compression/DeflaterEngine.cs.meta | 11 + .../Zip/Compression/DeflaterHuffman.cs | 959 ++ .../Zip/Compression/DeflaterHuffman.cs.meta | 11 + .../Zip/Compression/DeflaterPending.cs | 17 + .../Zip/Compression/DeflaterPending.cs.meta | 11 + .../SharpZipLib/Zip/Compression/Inflater.cs | 887 ++ .../Zip/Compression/Inflater.cs.meta | 11 + .../Zip/Compression/InflaterDynHeader.cs | 151 + .../Zip/Compression/InflaterDynHeader.cs.meta | 11 + .../Zip/Compression/InflaterHuffmanTree.cs | 232 + .../Compression/InflaterHuffmanTree.cs.meta | 11 + .../Zip/Compression/PendingBuffer.cs | 268 + .../Zip/Compression/PendingBuffer.cs.meta | 11 + .../SharpZipLib/Zip/Compression/Streams.meta | 8 + .../Streams/DeflaterOutputStream.cs | 487 + .../Streams/DeflaterOutputStream.cs.meta | 11 + .../Streams/InflaterInputStream.cs | 713 ++ .../Streams/InflaterInputStream.cs.meta | 11 + .../Zip/Compression/Streams/OutputWindow.cs | 220 + .../Compression/Streams/OutputWindow.cs.meta | 11 + .../Compression/Streams/StreamManipulator.cs | 298 + .../Streams/StreamManipulator.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Zip/FastZip.cs | 779 ++ .../Core/SharpZipLib/Zip/FastZip.cs.meta | 11 + .../Core/SharpZipLib/Zip/IEntryFactory.cs | 54 + .../SharpZipLib/Zip/IEntryFactory.cs.meta | 11 + .../SharpZipLib/Zip/WindowsNameTransform.cs | 258 + .../Zip/WindowsNameTransform.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipConstants.cs | 497 + .../Core/SharpZipLib/Zip/ZipConstants.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Zip/ZipEntry.cs | 1350 +++ .../Core/SharpZipLib/Zip/ZipEntry.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipEntryFactory.cs | 375 + .../SharpZipLib/Zip/ZipEntryFactory.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipException.cs | 36 + .../Core/SharpZipLib/Zip/ZipException.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipExtraData.cs | 979 ++ .../Core/SharpZipLib/Zip/ZipExtraData.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Zip/ZipFile.cs | 4794 +++++++++ .../Core/SharpZipLib/Zip/ZipFile.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipHelperStream.cs | 629 ++ .../SharpZipLib/Zip/ZipHelperStream.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipInputStream.cs | 694 ++ .../SharpZipLib/Zip/ZipInputStream.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipNameTransform.cs | 250 + .../SharpZipLib/Zip/ZipNameTransform.cs.meta | 11 + .../Core/SharpZipLib/Zip/ZipOutputStream.cs | 943 ++ .../SharpZipLib/Zip/ZipOutputStream.cs.meta | 11 + .../Vendor/Core/SharpZipLib/Zip/ZipStrings.cs | 193 + .../Core/SharpZipLib/Zip/ZipStrings.cs.meta | 11 + Assets/TinaX/Vendor/Core/UniRx.meta | 8 + Assets/TinaX/Vendor/Core/UniRx/Plugins.meta | 8 + .../Vendor/Core/UniRx/Plugins/UniRx.meta | 8 + .../Core/UniRx/Plugins/UniRx/Examples.meta | 8 + .../UniRx/Examples/Sample01_ObservableWWW.cs | 90 + .../Examples/Sample01_ObservableWWW.cs.meta | 12 + .../Examples/Sample02_ObservableTriggers.cs | 24 + .../Sample02_ObservableTriggers.cs.meta | 12 + .../Sample03_GameObjectAsObservable.cs | 23 + .../Sample03_GameObjectAsObservable.cs.meta | 12 + .../Sample04_ConvertFromUnityCallback.cs | 66 + .../Sample04_ConvertFromUnityCallback.cs.meta | 12 + .../Examples/Sample05_ConvertFromCoroutine.cs | 45 + .../Sample05_ConvertFromCoroutine.cs.meta | 12 + .../Examples/Sample06_ConvertToCoroutine.cs | 62 + .../Sample06_ConvertToCoroutine.cs.meta | 12 + .../Sample07_OrchestratIEnumerator.cs | 45 + .../Sample07_OrchestratIEnumerator.cs.meta | 12 + .../Examples/Sample08_DetectDoubleClick.cs | 32 + .../Sample08_DetectDoubleClick.cs.meta | 12 + .../UniRx/Examples/Sample09_EventHandling.cs | 69 + .../Examples/Sample09_EventHandling.cs.meta | 12 + .../Examples/Sample10_MainThreadDispatcher.cs | 48 + .../Sample10_MainThreadDispatcher.cs.meta | 12 + .../Plugins/UniRx/Examples/Sample11_Logger.cs | 41 + .../UniRx/Examples/Sample11_Logger.cs.meta | 12 + .../UniRx/Examples/Sample12Scene.unity | 1535 +++ .../UniRx/Examples/Sample12Scene.unity.meta | 8 + .../Examples/Sample12_ReactiveProperty.cs | 77 + .../Sample12_ReactiveProperty.cs.meta | 12 + .../UniRx/Examples/Sample13Scene.unity | 1300 +++ .../UniRx/Examples/Sample13Scene.unity.meta | 8 + .../UniRx/Examples/Sample13_ToDoApp.cs | 68 + .../UniRx/Examples/Sample13_ToDoApp.cs.meta | 12 + .../UniRx/Examples/UniRx.Examples.asmdef | 12 + .../UniRx/Examples/UniRx.Examples.asmdef.meta | 7 + .../Core/UniRx/Plugins/UniRx/Scripts.meta | 8 + .../Plugins/UniRx/Scripts/Asynchronous.meta | 8 + .../Asynchronous/WebRequestExtensions.cs | 61 + .../Asynchronous/WebRequestExtensions.cs.meta | 12 + .../Plugins/UniRx/Scripts/Disposables.meta | 8 + .../Scripts/Disposables/BooleanDisposable.cs | 25 + .../Disposables/BooleanDisposable.cs.meta | 12 + .../Disposables/CancellationDisposable.cs | 67 + .../CancellationDisposable.cs.meta | 12 + .../Disposables/CompositeDisposable.cs | 283 + .../Disposables/CompositeDisposable.cs.meta | 12 + .../Disposables/DictionaryDisposable.cs | 255 + .../Disposables/DictionaryDisposable.cs.meta | 12 + .../UniRx/Scripts/Disposables/Disposable.cs | 76 + .../Scripts/Disposables/Disposable.cs.meta | 12 + .../Disposables/DisposableExtensions.cs | 20 + .../Disposables/DisposableExtensions.cs.meta | 12 + .../UniRx/Scripts/Disposables/ICancelable.cs | 11 + .../Scripts/Disposables/ICancelable.cs.meta | 12 + .../MultipleAssignmentDisposable.cs | 69 + .../MultipleAssignmentDisposable.cs.meta | 12 + .../Scripts/Disposables/RefCountDisposable.cs | 152 + .../Disposables/RefCountDisposable.cs.meta | 12 + .../Disposables/ScheduledDisposable.cs | 46 + .../Disposables/ScheduledDisposable.cs.meta | 12 + .../Scripts/Disposables/SerialDisposable.cs | 64 + .../Disposables/SerialDisposable.cs.meta | 12 + .../Disposables/SingleAssignmentDisposable.cs | 68 + .../SingleAssignmentDisposable.cs.meta | 12 + .../Disposables/StableCompositeDisposable.cs | 277 + .../StableCompositeDisposable.cs.meta | 12 + .../Plugins/UniRx/Scripts/EventPattern.cs | 140 + .../UniRx/Scripts/EventPattern.cs.meta | 12 + .../Plugins/UniRx/Scripts/InternalUtil.meta | 8 + .../UniRx/Scripts/InternalUtil/AscynLock.cs | 85 + .../Scripts/InternalUtil/AscynLock.cs.meta | 12 + .../CancellableTaskCompletionSource.cs | 23 + .../CancellableTaskCompletionSource.cs.meta | 11 + .../InternalUtil/ExceptionExtensions.cs | 15 + .../InternalUtil/ExceptionExtensions.cs.meta | 12 + .../Scripts/InternalUtil/ImmutableList.cs | 61 + .../InternalUtil/ImmutableList.cs.meta | 12 + .../Scripts/InternalUtil/ListObserver.cs | 134 + .../Scripts/InternalUtil/ListObserver.cs.meta | 12 + .../Scripts/InternalUtil/MicroCoroutine.cs | 170 + .../InternalUtil/MicroCoroutine.cs.meta | 12 + .../Scripts/InternalUtil/PriorityQueue.cs | 149 + .../InternalUtil/PriorityQueue.cs.meta | 12 + .../Scripts/InternalUtil/PromiseHelper.cs | 26 + .../InternalUtil/PromiseHelper.cs.meta | 11 + .../Scripts/InternalUtil/ScheduledItem.cs | 257 + .../InternalUtil/ScheduledItem.cs.meta | 12 + .../InternalUtil/ThreadSafeQueueWorker.cs | 112 + .../ThreadSafeQueueWorker.cs.meta | 12 + .../InternalUtil/UnityEqualityComparer.cs | 271 + .../UnityEqualityComparer.cs.meta | 11 + .../Plugins/UniRx/Scripts/Notification.cs | 678 ++ .../UniRx/Scripts/Notification.cs.meta | 12 + .../Plugins/UniRx/Scripts/Notifiers.meta | 8 + .../Scripts/Notifiers/BooleanNotifier.cs | 73 + .../Scripts/Notifiers/BooleanNotifier.cs.meta | 12 + .../UniRx/Scripts/Notifiers/CountNotifier.cs | 97 + .../Scripts/Notifiers/CountNotifier.cs.meta | 12 + .../UniRx/Scripts/Notifiers/MessageBroker.cs | 209 + .../Scripts/Notifiers/MessageBroker.cs.meta | 12 + .../Scripts/Notifiers/ScheduledNotifier.cs | 72 + .../Notifiers/ScheduledNotifier.cs.meta | 12 + .../UniRx/Scripts/Observable.Aggregate.cs | 35 + .../Scripts/Observable.Aggregate.cs.meta | 12 + .../UniRx/Scripts/Observable.Awaiter.cs | 133 + .../UniRx/Scripts/Observable.Awaiter.cs.meta | 12 + .../UniRx/Scripts/Observable.Binding.cs | 76 + .../UniRx/Scripts/Observable.Binding.cs.meta | 12 + .../UniRx/Scripts/Observable.Blocking.cs | 17 + .../UniRx/Scripts/Observable.Blocking.cs.meta | 12 + .../UniRx/Scripts/Observable.Concatenate.cs | 320 + .../Scripts/Observable.Concatenate.cs.meta | 12 + .../UniRx/Scripts/Observable.Concurrency.cs | 71 + .../Scripts/Observable.Concurrency.cs.meta | 12 + .../UniRx/Scripts/Observable.Conversions.cs | 74 + .../Scripts/Observable.Conversions.cs.meta | 12 + .../UniRx/Scripts/Observable.Creation.cs | 375 + .../UniRx/Scripts/Observable.Creation.cs.meta | 12 + .../UniRx/Scripts/Observable.ErrorHandling.cs | 134 + .../Scripts/Observable.ErrorHandling.cs.meta | 12 + .../UniRx/Scripts/Observable.Events.cs | 34 + .../UniRx/Scripts/Observable.Events.cs.meta | 12 + .../UniRx/Scripts/Observable.FromAsync.cs | 127 + .../Scripts/Observable.FromAsync.cs.meta | 12 + .../Plugins/UniRx/Scripts/Observable.Joins.cs | 10 + .../UniRx/Scripts/Observable.Joins.cs.meta | 12 + .../UniRx/Scripts/Observable.Paging.cs | 327 + .../UniRx/Scripts/Observable.Paging.cs.meta | 12 + .../Plugins/UniRx/Scripts/Observable.Time.cs | 140 + .../UniRx/Scripts/Observable.Time.cs.meta | 12 + .../UniRx/Plugins/UniRx/Scripts/Observable.cs | 292 + .../Plugins/UniRx/Scripts/Observable.cs.meta | 12 + .../UniRx/Plugins/UniRx/Scripts/Observer.cs | 524 + .../Plugins/UniRx/Scripts/Observer.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators.meta | 8 + .../UniRx/Scripts/Operators/Aggregate.cs | 207 + .../UniRx/Scripts/Operators/Aggregate.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Amb.cs | 182 + .../UniRx/Scripts/Operators/Amb.cs.meta | 12 + .../UniRx/Scripts/Operators/AsObservable.cs | 45 + .../Scripts/Operators/AsObservable.cs.meta | 12 + .../Operators/AsSingleUnitObservable.cs | 46 + .../Operators/AsSingleUnitObservable.cs.meta | 12 + .../Scripts/Operators/AsUnitObservable.cs | 45 + .../Operators/AsUnitObservable.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Buffer.cs | 624 ++ .../UniRx/Scripts/Operators/Buffer.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Cast.cs | 57 + .../UniRx/Scripts/Operators/Cast.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Catch.cs | 217 + .../UniRx/Scripts/Operators/Catch.cs.meta | 12 + .../UniRx/Scripts/Operators/CombineLatest.cs | 1010 ++ .../Scripts/Operators/CombineLatest.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Concat.cs | 142 + .../UniRx/Scripts/Operators/Concat.cs.meta | 12 + .../UniRx/Scripts/Operators/ContinueWith.cs | 77 + .../Scripts/Operators/ContinueWith.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Create.cs | 156 + .../UniRx/Scripts/Operators/Create.cs.meta | 12 + .../UniRx/Scripts/Operators/DefaultIfEmpty.cs | 58 + .../Scripts/Operators/DefaultIfEmpty.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Defer.cs | 64 + .../UniRx/Scripts/Operators/Defer.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Delay.cs | 227 + .../UniRx/Scripts/Operators/Delay.cs.meta | 12 + .../Scripts/Operators/DelaySubscription.cs | 56 + .../Operators/DelaySubscription.cs.meta | 12 + .../UniRx/Scripts/Operators/Dematerialize.cs | 66 + .../Scripts/Operators/Dematerialize.cs.meta | 12 + .../UniRx/Scripts/Operators/Distinct.cs | 133 + .../UniRx/Scripts/Operators/Distinct.cs.meta | 12 + .../Scripts/Operators/DistinctUntilChanged.cs | 165 + .../Operators/DistinctUntilChanged.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Do.cs | 477 + .../UniRx/Scripts/Operators/Do.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Empty.cs | 83 + .../UniRx/Scripts/Operators/Empty.cs.meta | 12 + .../UniRx/Scripts/Operators/Finally.cs | 68 + .../UniRx/Scripts/Operators/Finally.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/First.cs | 166 + .../UniRx/Scripts/Operators/First.cs.meta | 12 + .../UniRx/Scripts/Operators/ForEachAsync.cs | 116 + .../Scripts/Operators/ForEachAsync.cs.meta | 12 + .../UniRx/Scripts/Operators/FromEvent.cs | 323 + .../UniRx/Scripts/Operators/FromEvent.cs.meta | 12 + .../UniRx/Scripts/Operators/GroupBy.cs | 196 + .../UniRx/Scripts/Operators/GroupBy.cs.meta | 12 + .../UniRx/Scripts/Operators/IgnoreElements.cs | 44 + .../Scripts/Operators/IgnoreElements.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Last.cs | 165 + .../UniRx/Scripts/Operators/Last.cs.meta | 12 + .../UniRx/Scripts/Operators/Materialize.cs | 53 + .../Scripts/Operators/Materialize.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Merge.cs | 264 + .../UniRx/Scripts/Operators/Merge.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Never.cs | 32 + .../UniRx/Scripts/Operators/Never.cs.meta | 12 + .../UniRx/Scripts/Operators/ObserveOn.cs | 210 + .../UniRx/Scripts/Operators/ObserveOn.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/OfType.cs | 47 + .../UniRx/Scripts/Operators/OfType.cs.meta | 12 + .../Operators/OperatorObservableBase.cs | 42 + .../Operators/OperatorObservableBase.cs.meta | 12 + .../Scripts/Operators/OperatorObserverBase.cs | 33 + .../Operators/OperatorObserverBase.cs.meta | 12 + .../UniRx/Scripts/Operators/PairWise.cs | 120 + .../UniRx/Scripts/Operators/PairWise.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Range.cs | 89 + .../UniRx/Scripts/Operators/Range.cs.meta | 12 + .../UniRx/Scripts/Operators/RefCount.cs | 77 + .../UniRx/Scripts/Operators/RefCount.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Repeat.cs | 99 + .../UniRx/Scripts/Operators/Repeat.cs.meta | 12 + .../UniRx/Scripts/Operators/RepeatSafe.cs | 138 + .../Scripts/Operators/RepeatSafe.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Return.cs | 205 + .../UniRx/Scripts/Operators/Return.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Sample.cs | 241 + .../UniRx/Scripts/Operators/Sample.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Scan.cs | 139 + .../UniRx/Scripts/Operators/Scan.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Select.cs | 146 + .../UniRx/Scripts/Operators/Select.cs.meta | 12 + .../UniRx/Scripts/Operators/SelectMany.cs | 910 ++ .../Scripts/Operators/SelectMany.cs.meta | 12 + .../UniRx/Scripts/Operators/SelectWhere.cs | 77 + .../Scripts/Operators/SelectWhere.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Single.cs | 182 + .../UniRx/Scripts/Operators/Single.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Skip.cs | 138 + .../UniRx/Scripts/Operators/Skip.cs.meta | 12 + .../UniRx/Scripts/Operators/SkipUntil.cs | 119 + .../UniRx/Scripts/Operators/SkipUntil.cs.meta | 12 + .../UniRx/Scripts/Operators/SkipWhile.cs | 130 + .../UniRx/Scripts/Operators/SkipWhile.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Start.cs | 101 + .../UniRx/Scripts/Operators/Start.cs.meta | 12 + .../UniRx/Scripts/Operators/StartWith.cs | 82 + .../UniRx/Scripts/Operators/StartWith.cs.meta | 12 + .../UniRx/Scripts/Operators/SubscribeOn.cs | 32 + .../Scripts/Operators/SubscribeOn.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Switch.cs | 130 + .../UniRx/Scripts/Operators/Switch.cs.meta | 12 + .../UniRx/Scripts/Operators/Synchronize.cs | 57 + .../Scripts/Operators/Synchronize.cs.meta | 12 + .../Scripts/Operators/SynchronizedObserver.cs | 40 + .../Operators/SynchronizedObserver.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Take.cs | 150 + .../UniRx/Scripts/Operators/Take.cs.meta | 12 + .../UniRx/Scripts/Operators/TakeLast.cs | 140 + .../UniRx/Scripts/Operators/TakeLast.cs.meta | 12 + .../UniRx/Scripts/Operators/TakeUntil.cs | 128 + .../UniRx/Scripts/Operators/TakeUntil.cs.meta | 12 + .../UniRx/Scripts/Operators/TakeWhile.cs | 134 + .../UniRx/Scripts/Operators/TakeWhile.cs.meta | 12 + .../UniRx/Scripts/Operators/Throttle.cs | 106 + .../UniRx/Scripts/Operators/Throttle.cs.meta | 12 + .../UniRx/Scripts/Operators/ThrottleFirst.cs | 87 + .../Scripts/Operators/ThrottleFirst.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Throw.cs | 69 + .../UniRx/Scripts/Operators/Throw.cs.meta | 12 + .../UniRx/Scripts/Operators/TimeInterval.cs | 56 + .../Scripts/Operators/TimeInterval.cs.meta | 12 + .../UniRx/Scripts/Operators/Timeout.cs | 198 + .../UniRx/Scripts/Operators/Timeout.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Timer.cs | 124 + .../UniRx/Scripts/Operators/Timer.cs.meta | 12 + .../UniRx/Scripts/Operators/Timestamp.cs | 50 + .../UniRx/Scripts/Operators/Timestamp.cs.meta | 12 + .../UniRx/Scripts/Operators/ToArray.cs | 66 + .../UniRx/Scripts/Operators/ToArray.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/ToList.cs | 55 + .../UniRx/Scripts/Operators/ToList.cs.meta | 12 + .../UniRx/Scripts/Operators/ToObservable.cs | 138 + .../Scripts/Operators/ToObservable.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Wait.cs | 63 + .../UniRx/Scripts/Operators/Wait.cs.meta | 12 + .../UniRx/Scripts/Operators/WhenAll.cs | 485 + .../UniRx/Scripts/Operators/WhenAll.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Where.cs | 147 + .../UniRx/Scripts/Operators/Where.cs.meta | 12 + .../UniRx/Scripts/Operators/WhereSelect.cs | 77 + .../Scripts/Operators/WhereSelect.cs.meta | 12 + .../UniRx/Scripts/Operators/WithLatestFrom.cs | 149 + .../Scripts/Operators/WithLatestFrom.cs.meta | 12 + .../Plugins/UniRx/Scripts/Operators/Zip.cs | 1004 ++ .../UniRx/Scripts/Operators/Zip.cs.meta | 12 + .../UniRx/Scripts/Operators/ZipLatest.cs | 992 ++ .../UniRx/Scripts/Operators/ZipLatest.cs.meta | 12 + .../Core/UniRx/Plugins/UniRx/Scripts/Pair.cs | 59 + .../UniRx/Plugins/UniRx/Scripts/Pair.cs.meta | 12 + .../Plugins/UniRx/Scripts/Schedulers.meta | 8 + .../Schedulers/CurrentThreadScheduler.cs | 135 + .../Schedulers/CurrentThreadScheduler.cs.meta | 12 + .../UniRx/Scripts/Schedulers/IScheduler.cs | 30 + .../Scripts/Schedulers/IScheduler.cs.meta | 12 + .../Scripts/Schedulers/ImmediateScheduler.cs | 43 + .../Schedulers/ImmediateScheduler.cs.meta | 12 + .../UniRx/Scripts/Schedulers/Scheduler.cs | 235 + .../Scripts/Schedulers/Scheduler.cs.meta | 12 + .../Scripts/Schedulers/ThreadPoolScheduler.cs | 197 + .../Schedulers/ThreadPoolScheduler.cs.meta | 12 + .../UniRx/Plugins/UniRx/Scripts/Subjects.meta | 8 + .../UniRx/Scripts/Subjects/AsyncSubject.cs | 328 + .../Scripts/Subjects/AsyncSubject.cs.meta | 12 + .../UniRx/Scripts/Subjects/BehaviorSubject.cs | 204 + .../Scripts/Subjects/BehaviorSubject.cs.meta | 12 + .../Scripts/Subjects/ConnectableObservable.cs | 71 + .../Subjects/ConnectableObservable.cs.meta | 12 + .../UniRx/Scripts/Subjects/ISubject.cs | 14 + .../UniRx/Scripts/Subjects/ISubject.cs.meta | 12 + .../UniRx/Scripts/Subjects/ReplaySubject.cs | 251 + .../Scripts/Subjects/ReplaySubject.cs.meta | 12 + .../Plugins/UniRx/Scripts/Subjects/Subject.cs | 169 + .../UniRx/Scripts/Subjects/Subject.cs.meta | 12 + .../Scripts/Subjects/SubjectExtensions.cs | 61 + .../Subjects/SubjectExtensions.cs.meta | 12 + .../UniRx/Plugins/UniRx/Scripts/System.meta | 8 + .../UniRx/Scripts/System/IObservable.cs | 23 + .../UniRx/Scripts/System/IObservable.cs.meta | 12 + .../Plugins/UniRx/Scripts/System/IObserver.cs | 17 + .../UniRx/Scripts/System/IObserver.cs.meta | 12 + .../Scripts/System/IOptimizedObservable.cs | 27 + .../System/IOptimizedObservable.cs.meta | 12 + .../Plugins/UniRx/Scripts/System/IProgress.cs | 30 + .../UniRx/Scripts/System/IProgress.cs.meta | 12 + .../Plugins/UniRx/Scripts/System/Tuple.cs | 1195 +++ .../UniRx/Scripts/System/Tuple.cs.meta | 12 + .../Plugins/UniRx/Scripts/System/Unit.cs | 41 + .../Plugins/UniRx/Scripts/System/Unit.cs.meta | 12 + .../UniRx/Plugins/UniRx/Scripts/Tasks.meta | 8 + .../Scripts/Tasks/TaskObservableExtensions.cs | 367 + .../Tasks/TaskObservableExtensions.cs.meta | 12 + .../Plugins/UniRx/Scripts/TimeInterval.cs | 117 + .../UniRx/Scripts/TimeInterval.cs.meta | 12 + .../Plugins/UniRx/Scripts/Timestamped.cs | 135 + .../Plugins/UniRx/Scripts/Timestamped.cs.meta | 12 + .../UniRx/Plugins/UniRx/Scripts/UniRx.asmdef | 12 + .../Plugins/UniRx/Scripts/UniRx.asmdef.meta | 7 + .../UniRx/Scripts/UnityEngineBridge.meta | 8 + .../AsyncOperationExtensions.cs | 75 + .../AsyncOperationExtensions.cs.meta | 12 + .../UnityEngineBridge/CancellationToken.cs | 40 + .../CancellationToken.cs.meta | 12 + .../UnityEngineBridge/CoroutineAsyncBridge.cs | 125 + .../CoroutineAsyncBridge.cs.meta | 12 + .../UnityEngineBridge/Diagnostics.meta | 8 + .../UnityEngineBridge/Diagnostics/LogEntry.cs | 50 + .../Diagnostics/LogEntry.cs.meta | 12 + .../Diagnostics/LogEntryExtensions.cs | 14 + .../Diagnostics/LogEntryExtensions.cs.meta | 12 + .../UnityEngineBridge/Diagnostics/Logger.cs | 139 + .../Diagnostics/Logger.cs.meta | 12 + .../Diagnostics/ObservableDebugExtensions.cs | 42 + .../ObservableDebugExtensions.cs.meta | 12 + .../Diagnostics/ObservableLogger.cs | 31 + .../Diagnostics/ObservableLogger.cs.meta | 12 + .../Diagnostics/UnityDebugSink.cs | 73 + .../Diagnostics/UnityDebugSink.cs.meta | 12 + .../UnityEngineBridge/FrameInterval.cs | 111 + .../UnityEngineBridge/FrameInterval.cs.meta | 12 + .../InspectableReactiveProperty.cs | 325 + .../InspectableReactiveProperty.cs.meta | 12 + .../InspectorDisplayDrawer.cs | 306 + .../InspectorDisplayDrawer.cs.meta | 12 + .../LifetimeDisposableExtensions.cs | 90 + .../LifetimeDisposableExtensions.cs.meta | 12 + .../UnityEngineBridge/MainThreadDispatcher.cs | 683 ++ .../MainThreadDispatcher.cs.meta | 12 + .../UnityEngineBridge/MainThreadScheduler.cs | 579 ++ .../MainThreadScheduler.cs.meta | 12 + .../UnityEngineBridge/Observable.Unity.cs | 1168 +++ .../Observable.Unity.cs.meta | 12 + .../UnityEngineBridge/ObservableWWW.cs | 442 + .../UnityEngineBridge/ObservableWWW.cs.meta | 12 + .../UnityEngineBridge/ObserveExtensions.cs | 264 + .../ObserveExtensions.cs.meta | 12 + .../Scripts/UnityEngineBridge/Operators.meta | 8 + .../UnityEngineBridge/Operators/BatchFrame.cs | 282 + .../Operators/BatchFrame.cs.meta | 12 + .../UnityEngineBridge/Operators/DelayFrame.cs | 260 + .../Operators/DelayFrame.cs.meta | 12 + .../Operators/DelayFrameSubscription.cs | 37 + .../Operators/DelayFrameSubscription.cs.meta | 12 + .../Operators/FrameInterval.cs | 52 + .../Operators/FrameInterval.cs.meta | 12 + .../Operators/FrameTimeInterval.cs | 60 + .../Operators/FrameTimeInterval.cs.meta | 12 + .../Operators/FromCoroutine.cs | 141 + .../Operators/FromCoroutine.cs.meta | 12 + .../Operators/RepeatUntil.cs | 178 + .../Operators/RepeatUntil.cs.meta | 12 + .../Operators/SampleFrame.cs | 132 + .../Operators/SampleFrame.cs.meta | 12 + .../Operators/SubscribeOnMainThread.cs | 31 + .../Operators/SubscribeOnMainThread.cs.meta | 12 + .../Operators/ThrottleFirstFrame.cs | 123 + .../Operators/ThrottleFirstFrame.cs.meta | 12 + .../Operators/ThrottleFrame.cs | 129 + .../Operators/ThrottleFrame.cs.meta | 12 + .../Operators/TimeoutFrame.cs | 142 + .../Operators/TimeoutFrame.cs.meta | 12 + .../UnityEngineBridge/ReactiveCollection.cs | 333 + .../ReactiveCollection.cs.meta | 12 + .../UnityEngineBridge/ReactiveCommand.cs | 487 + .../UnityEngineBridge/ReactiveCommand.cs.meta | 12 + .../UnityEngineBridge/ReactiveDictionary.cs | 520 + .../ReactiveDictionary.cs.meta | 12 + .../UnityEngineBridge/ReactiveProperty.cs | 610 ++ .../ReactiveProperty.cs.meta | 12 + .../ScenePlaybackDetector.cs | 84 + .../ScenePlaybackDetector.cs.meta | 12 + .../Scripts/UnityEngineBridge/Toolkit.meta | 8 + .../UnityEngineBridge/Toolkit/ObjectPool.cs | 474 + .../Toolkit/ObjectPool.cs.meta | 12 + .../Scripts/UnityEngineBridge/Triggers.meta | 8 + .../Triggers/ObservableAnimatorTrigger.cs | 49 + .../ObservableAnimatorTrigger.cs.meta | 12 + .../Triggers/ObservableBeginDragTrigger.cs | 36 + .../ObservableBeginDragTrigger.cs.meta | 12 + .../Triggers/ObservableCancelTrigger.cs | 36 + .../Triggers/ObservableCancelTrigger.cs.meta | 12 + .../ObservableCanvasGroupChangedTrigger.cs | 36 + ...bservableCanvasGroupChangedTrigger.cs.meta | 12 + .../Triggers/ObservableCollision2DTrigger.cs | 67 + .../ObservableCollision2DTrigger.cs.meta | 12 + .../Triggers/ObservableCollisionTrigger.cs | 67 + .../ObservableCollisionTrigger.cs.meta | 12 + .../Triggers/ObservableDeselectTrigger.cs | 36 + .../ObservableDeselectTrigger.cs.meta | 12 + .../Triggers/ObservableDestroyTrigger.cs | 67 + .../Triggers/ObservableDestroyTrigger.cs.meta | 12 + .../Triggers/ObservableDragTrigger.cs | 36 + .../Triggers/ObservableDragTrigger.cs.meta | 12 + .../Triggers/ObservableDropTrigger.cs | 36 + .../Triggers/ObservableDropTrigger.cs.meta | 12 + .../Triggers/ObservableEnableTrigger.cs | 49 + .../Triggers/ObservableEnableTrigger.cs.meta | 12 + .../Triggers/ObservableEndDragTrigger.cs | 36 + .../Triggers/ObservableEndDragTrigger.cs.meta | 12 + .../Triggers/ObservableEventTrigger.cs | 359 + .../Triggers/ObservableEventTrigger.cs.meta | 12 + .../Triggers/ObservableFixedUpdateTrigger.cs | 31 + .../ObservableFixedUpdateTrigger.cs.meta | 12 + ...bservableInitializePotentialDragTrigger.cs | 36 + ...ableInitializePotentialDragTrigger.cs.meta | 12 + .../Triggers/ObservableJointTrigger.cs | 47 + .../Triggers/ObservableJointTrigger.cs.meta | 11 + .../Triggers/ObservableLateUpdateTrigger.cs | 31 + .../ObservableLateUpdateTrigger.cs.meta | 12 + .../Triggers/ObservableMouseTrigger.cs | 143 + .../Triggers/ObservableMouseTrigger.cs.meta | 12 + .../Triggers/ObservableMoveTrigger.cs | 36 + .../Triggers/ObservableMoveTrigger.cs.meta | 12 + .../Triggers/ObservableParticleTrigger.cs | 56 + .../ObservableParticleTrigger.cs.meta | 12 + .../Triggers/ObservablePointerClickTrigger.cs | 36 + .../ObservablePointerClickTrigger.cs.meta | 12 + .../Triggers/ObservablePointerDownTrigger.cs | 36 + .../ObservablePointerDownTrigger.cs.meta | 12 + .../Triggers/ObservablePointerEnterTrigger.cs | 36 + .../ObservablePointerEnterTrigger.cs.meta | 12 + .../Triggers/ObservablePointerExitTrigger.cs | 36 + .../ObservablePointerExitTrigger.cs.meta | 12 + .../Triggers/ObservablePointerUpTrigger.cs | 36 + .../ObservablePointerUpTrigger.cs.meta | 12 + .../ObservableRectTransformTrigger.cs | 55 + .../ObservableRectTransformTrigger.cs.meta | 12 + .../Triggers/ObservableScrollTrigger.cs | 36 + .../Triggers/ObservableScrollTrigger.cs.meta | 12 + .../Triggers/ObservableSelectTrigger.cs | 36 + .../Triggers/ObservableSelectTrigger.cs.meta | 12 + .../Triggers/ObservableStateMachineTrigger.cs | 143 + .../ObservableStateMachineTrigger.cs.meta | 12 + .../Triggers/ObservableSubmitTrigger.cs | 36 + .../Triggers/ObservableSubmitTrigger.cs.meta | 12 + .../ObservableTransformChangedTrigger.cs | 72 + .../ObservableTransformChangedTrigger.cs.meta | 12 + .../Triggers/ObservableTrigger2DTrigger.cs | 67 + .../ObservableTrigger2DTrigger.cs.meta | 12 + .../Triggers/ObservableTriggerBase.cs | 65 + .../Triggers/ObservableTriggerBase.cs.meta | 12 + .../ObservableTriggerExtensions.Component.cs | 461 + ...ervableTriggerExtensions.Component.cs.meta | 12 + .../Triggers/ObservableTriggerExtensions.cs | 361 + .../ObservableTriggerExtensions.cs.meta | 12 + .../Triggers/ObservableTriggerTrigger.cs | 67 + .../Triggers/ObservableTriggerTrigger.cs.meta | 12 + .../ObservableUpdateSelectedTrigger.cs | 36 + .../ObservableUpdateSelectedTrigger.cs.meta | 12 + .../Triggers/ObservableUpdateTrigger.cs | 31 + .../Triggers/ObservableUpdateTrigger.cs.meta | 12 + .../Triggers/ObservableVisibleTrigger.cs | 49 + .../Triggers/ObservableVisibleTrigger.cs.meta | 12 + .../UnityEngineBridge/UnityEventExtensions.cs | 58 + .../UnityEventExtensions.cs.meta | 12 + .../UnityGraphicExtensions.cs | 44 + .../UnityGraphicExtensions.cs.meta | 12 + .../UnityUIComponentExtensions.cs | 123 + .../UnityUIComponentExtensions.cs.meta | 12 + .../YieldInstructionCache.cs | 10 + .../YieldInstructionCache.cs.meta | 12 + .../UniRx/Scripts/UnityWinRTBridge.meta | 8 + .../UniRx/Scripts/UnityWinRTBridge/Thread.cs | 26 + .../Scripts/UnityWinRTBridge/Thread.cs.meta | 12 + .../ThreadPoolScheduler_UnityWinRT.cs | 100 + .../ThreadPoolScheduler_UnityWinRT.cs.meta | 12 + .../TinaX/Vendor/Core/UniRx/UniRx.Async.meta | 8 + .../Core/UniRx/UniRx.Async/AsyncUnit.cs | 28 + .../Core/UniRx/UniRx.Async/AsyncUnit.cs.meta | 11 + .../CancellationTokenEqualityComparer.cs | 25 + .../CancellationTokenEqualityComparer.cs.meta | 11 + .../CancellationTokenExtensions.cs | 76 + .../CancellationTokenExtensions.cs.meta | 11 + .../CancellationTokenSourceExtensions.cs | 48 + .../CancellationTokenSourceExtensions.cs.meta | 11 + .../UniRx/UniRx.Async/CompilerServices.meta | 8 + .../AsyncMethodBuilderAttribute.cs | 18 + .../AsyncMethodBuilderAttribute.cs.meta | 11 + .../AsyncUniTaskMethodBuilder.cs | 274 + .../AsyncUniTaskMethodBuilder.cs.meta | 11 + .../AsyncUniTaskVoidMethodBuilder.cs | 90 + .../AsyncUniTaskVoidMethodBuilder.cs.meta | 11 + .../CompilerServices/MoveNextRunner.cs | 23 + .../CompilerServices/MoveNextRunner.cs.meta | 11 + .../UniRx.Async/DiagnosticsExtensions.cs | 270 + .../UniRx.Async/DiagnosticsExtensions.cs.meta | 11 + .../Vendor/Core/UniRx/UniRx.Async/Editor.meta | 8 + .../UniRx.Async/Editor/SplitterGUILayout.cs | 64 + .../Editor/SplitterGUILayout.cs.meta | 11 + .../Editor/UniRx.Async.Editor.asmdef | 16 + .../Editor/UniRx.Async.Editor.asmdef.meta | 7 + .../Editor/UniTaskTrackerTreeView.cs | 180 + .../Editor/UniTaskTrackerTreeView.cs.meta | 11 + .../Editor/UniTaskTrackerWindow.cs | 211 + .../Editor/UniTaskTrackerWindow.cs.meta | 11 + .../UniRx.Async/EnumerableAsyncExtensions.cs | 36 + .../EnumerableAsyncExtensions.cs.meta | 11 + .../UniRx.Async/EnumeratorAsyncExtensions.cs | 246 + .../EnumeratorAsyncExtensions.cs.meta | 11 + .../UniRx/UniRx.Async/ExceptionExtensions.cs | 16 + .../UniRx.Async/ExceptionExtensions.cs.meta | 11 + .../Vendor/Core/UniRx/UniRx.Async/IAwaiter.cs | 64 + .../Core/UniRx/UniRx.Async/IAwaiter.cs.meta | 11 + .../Core/UniRx/UniRx.Async/Internal.meta | 8 + .../UniRx/UniRx.Async/Internal/ArrayPool.cs | 152 + .../UniRx.Async/Internal/ArrayPool.cs.meta | 12 + .../UniRx.Async/Internal/ArrayPoolUtil.cs | 112 + .../Internal/ArrayPoolUtil.cs.meta | 12 + .../UniRx/UniRx.Async/Internal/ArrayUtil.cs | 75 + .../UniRx.Async/Internal/ArrayUtil.cs.meta | 12 + .../Internal/CancellationTokenHelper.cs | 32 + .../Internal/CancellationTokenHelper.cs.meta | 11 + .../UniRx.Async/Internal/ContinuationQueue.cs | 115 + .../Internal/ContinuationQueue.cs.meta | 11 + .../Core/UniRx/UniRx.Async/Internal/Error.cs | 63 + .../UniRx/UniRx.Async/Internal/Error.cs.meta | 12 + .../Core/UniRx/UniRx.Async/Internal/Hack.cs | 23 + .../UniRx/UniRx.Async/Internal/Hack.cs.meta | 11 + .../UniRx/UniRx.Async/Internal/LazyPromise.cs | 130 + .../UniRx.Async/Internal/LazyPromise.cs.meta | 11 + .../UniRx.Async/Internal/MinimumQueue.cs | 122 + .../UniRx.Async/Internal/MinimumQueue.cs.meta | 11 + .../UniRx.Async/Internal/PlayerLoopRunner.cs | 153 + .../Internal/PlayerLoopRunner.cs.meta | 11 + .../UniRx.Async/Internal/PromiseHelper.cs | 34 + .../Internal/PromiseHelper.cs.meta | 11 + .../UniRx.Async/Internal/ReusablePromise.cs | 395 + .../Internal/ReusablePromise.cs.meta | 11 + .../Internal/RuntimeHelpersAbstraction.cs | 60 + .../RuntimeHelpersAbstraction.cs.meta | 12 + .../UniRx/UniRx.Async/Internal/TaskTracker.cs | 152 + .../UniRx.Async/Internal/TaskTracker.cs.meta | 11 + .../Internal/UnityEqualityComparer.cs | 271 + .../Internal/UnityEqualityComparer.cs.meta | 11 + .../UniRx.Async/Internal/WeakDictionary.cs | 336 + .../Internal/WeakDictionary.cs.meta | 11 + .../UniRx/UniRx.Async/PlayerLoopHelper.cs | 156 + .../UniRx.Async/PlayerLoopHelper.cs.meta | 11 + .../Vendor/Core/UniRx/UniRx.Async/Progress.cs | 88 + .../Core/UniRx/UniRx.Async/Progress.cs.meta | 11 + .../Core/UniRx/UniRx.Async/Triggers.meta | 8 + .../Triggers/AsyncAnimatorTrigger.cs | 54 + .../Triggers/AsyncAnimatorTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncAwakeTrigger.cs | 55 + .../Triggers/AsyncAwakeTrigger.cs.meta | 11 + .../Triggers/AsyncBeginDragTrigger.cs | 41 + .../Triggers/AsyncBeginDragTrigger.cs.meta | 11 + .../Triggers/AsyncCancelTrigger.cs | 41 + .../Triggers/AsyncCancelTrigger.cs.meta | 11 + .../AsyncCanvasGroupChangedTrigger.cs | 41 + .../AsyncCanvasGroupChangedTrigger.cs.meta | 11 + .../Triggers/AsyncCollision2DTrigger.cs | 69 + .../Triggers/AsyncCollision2DTrigger.cs.meta | 11 + .../Triggers/AsyncCollisionTrigger.cs | 69 + .../Triggers/AsyncCollisionTrigger.cs.meta | 11 + .../Triggers/AsyncDeselectTrigger.cs | 41 + .../Triggers/AsyncDeselectTrigger.cs.meta | 11 + .../Triggers/AsyncDestroyTrigger.cs | 93 + .../Triggers/AsyncDestroyTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncDragTrigger.cs | 41 + .../Triggers/AsyncDragTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncDropTrigger.cs | 41 + .../Triggers/AsyncDropTrigger.cs.meta | 11 + .../Triggers/AsyncEnableDisableTrigger.cs | 55 + .../AsyncEnableDisableTrigger.cs.meta | 11 + .../Triggers/AsyncEndDragTrigger.cs | 41 + .../Triggers/AsyncEndDragTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncEventTrigger.cs | 264 + .../Triggers/AsyncEventTrigger.cs.meta | 11 + .../Triggers/AsyncFixedUpdateTrigger.cs | 41 + .../Triggers/AsyncFixedUpdateTrigger.cs.meta | 11 + .../AsyncInitializePotentialDragTrigger.cs | 41 + ...syncInitializePotentialDragTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncJointTrigger.cs | 55 + .../Triggers/AsyncJointTrigger.cs.meta | 11 + .../Triggers/AsyncLateUpdateTrigger.cs | 41 + .../Triggers/AsyncLateUpdateTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncMouseTrigger.cs | 129 + .../Triggers/AsyncMouseTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncMoveTrigger.cs | 41 + .../Triggers/AsyncMoveTrigger.cs.meta | 11 + .../Triggers/AsyncParticleTrigger.cs | 41 + .../Triggers/AsyncParticleTrigger.cs.meta | 11 + .../Triggers/AsyncPointerClickTrigger.cs | 41 + .../Triggers/AsyncPointerClickTrigger.cs.meta | 11 + .../Triggers/AsyncPointerDownTrigger.cs | 41 + .../Triggers/AsyncPointerDownTrigger.cs.meta | 11 + .../Triggers/AsyncPointerEnterTrigger.cs | 41 + .../Triggers/AsyncPointerEnterTrigger.cs.meta | 11 + .../Triggers/AsyncPointerExitTrigger.cs | 41 + .../Triggers/AsyncPointerExitTrigger.cs.meta | 11 + .../Triggers/AsyncPointerUpTrigger.cs | 41 + .../Triggers/AsyncPointerUpTrigger.cs.meta | 11 + .../Triggers/AsyncRectTransformTrigger.cs | 55 + .../AsyncRectTransformTrigger.cs.meta | 11 + .../Triggers/AsyncScrollTrigger.cs | 41 + .../Triggers/AsyncScrollTrigger.cs.meta | 11 + .../Triggers/AsyncSelectTrigger.cs | 41 + .../Triggers/AsyncSelectTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncStartTrigger.cs | 64 + .../Triggers/AsyncStartTrigger.cs.meta | 11 + .../Triggers/AsyncSubmitTrigger.cs | 41 + .../Triggers/AsyncSubmitTrigger.cs.meta | 11 + .../Triggers/AsyncTransformChangedTrigger.cs | 69 + .../AsyncTransformChangedTrigger.cs.meta | 11 + .../Triggers/AsyncTrigger2DTrigger.cs | 69 + .../Triggers/AsyncTrigger2DTrigger.cs.meta | 11 + .../UniRx.Async/Triggers/AsyncTriggerBase.cs | 271 + .../Triggers/AsyncTriggerBase.cs.meta | 11 + .../Triggers/AsyncTriggerExtensions.cs | 511 + .../Triggers/AsyncTriggerExtensions.cs.meta | 11 + .../Triggers/AsyncTriggerTrigger.cs | 69 + .../Triggers/AsyncTriggerTrigger.cs.meta | 11 + .../Triggers/AsyncUpdateSelectedTrigger.cs | 41 + .../AsyncUpdateSelectedTrigger.cs.meta | 11 + .../Triggers/AsyncUpdateTrigger.cs | 41 + .../Triggers/AsyncUpdateTrigger.cs.meta | 11 + .../Triggers/AsyncVisibleTrigger.cs | 55 + .../Triggers/AsyncVisibleTrigger.cs.meta | 11 + .../Core/UniRx/UniRx.Async/UniRx.Async.asmdef | 12 + .../UniRx/UniRx.Async/UniRx.Async.asmdef.meta | 7 + .../Core/UniRx/UniRx.Async/UniTask.Bridge.cs | 20 + .../UniRx/UniRx.Async/UniTask.Bridge.cs.meta | 11 + .../Core/UniRx/UniRx.Async/UniTask.Delay.cs | 246 + .../UniRx/UniRx.Async/UniTask.Delay.cs.meta | 11 + .../Core/UniRx/UniRx.Async/UniTask.Factory.cs | 121 + .../UniRx/UniRx.Async/UniTask.Factory.cs.meta | 11 + .../Core/UniRx/UniRx.Async/UniTask.Run.cs | 99 + .../UniRx/UniRx.Async/UniTask.Run.cs.meta | 11 + .../UniRx/UniRx.Async/UniTask.Threading.cs | 176 + .../UniRx.Async/UniTask.Threading.cs.meta | 11 + .../UniRx/UniRx.Async/UniTask.WaitUntil.cs | 235 + .../UniRx.Async/UniTask.WaitUntil.cs.meta | 11 + .../UniRx.Async/UniTask.WhenAll.Generated.cs | 1863 ++++ .../UniTask.WhenAll.Generated.cs.meta | 11 + .../Core/UniRx/UniRx.Async/UniTask.WhenAll.cs | 298 + .../UniRx/UniRx.Async/UniTask.WhenAll.cs.meta | 11 + .../UniRx.Async/UniTask.WhenAny.Generated.cs | 1527 +++ .../UniTask.WhenAny.Generated.cs.meta | 11 + .../Core/UniRx/UniRx.Async/UniTask.WhenAny.cs | 374 + .../UniRx/UniRx.Async/UniTask.WhenAny.cs.meta | 11 + .../Vendor/Core/UniRx/UniRx.Async/UniTask.cs | 479 + .../Core/UniRx/UniRx.Async/UniTask.cs.meta | 11 + .../UniRx.Async/UniTaskCompletionSource.cs | 413 + .../UniTaskCompletionSource.cs.meta | 11 + .../UniTaskExtensions.Shorthand.cs | 53 + .../UniTaskExtensions.Shorthand.cs.meta | 11 + .../UniRx/UniRx.Async/UniTaskExtensions.cs | 486 + .../UniRx.Async/UniTaskExtensions.cs.meta | 11 + .../UniTaskObservableExtensions.cs | 745 ++ .../UniTaskObservableExtensions.cs.meta | 11 + .../UniRx/UniRx.Async/UniTaskScheduler.cs | 94 + .../UniRx.Async/UniTaskScheduler.cs.meta | 11 + .../Core/UniRx/UniRx.Async/UniTaskVoid.cs | 48 + .../UniRx/UniRx.Async/UniTaskVoid.cs.meta | 11 + .../UniRx.Async/UnityAsyncExtensions.Jobs.cs | 140 + .../UnityAsyncExtensions.Jobs.cs.meta | 11 + .../UniRx/UniRx.Async/UnityAsyncExtensions.cs | 714 ++ .../UniRx.Async/UnityAsyncExtensions.cs.meta | 11 + .../UniRx.Async/UnityAsyncExtensions.uGUI.cs | 434 + .../UnityAsyncExtensions.uGUI.cs.meta | 11 + Assets/TinaX/Vendor/Core/xNode.meta | 8 + .../TinaX/Vendor/Core/xNode/CONTRIBUTING.md | 23 + .../Vendor/Core/xNode/CONTRIBUTING.md.meta | 8 + Assets/TinaX/Vendor/Core/xNode/LICENSE.md | 21 + .../TinaX/Vendor/Core/xNode/LICENSE.md.meta | 8 + Assets/TinaX/Vendor/Core/xNode/README.md | 73 + Assets/TinaX/Vendor/Core/xNode/README.md.meta | 8 + Assets/TinaX/Vendor/Core/xNode/Scripts.meta | 9 + .../Vendor/Core/xNode/Scripts/Attributes.meta | 10 + .../Core/xNode/Scripts/Attributes/NodeEnum.cs | 5 + .../xNode/Scripts/Attributes/NodeEnum.cs.meta | 13 + .../Vendor/Core/xNode/Scripts/Editor.meta | 9 + .../Core/xNode/Scripts/Editor/Drawers.meta | 10 + .../Scripts/Editor/Drawers/NodeEnumDrawer.cs | 66 + .../Editor/Drawers/NodeEnumDrawer.cs.meta | 13 + .../Core/xNode/Scripts/Editor/NodeEditor.cs | 128 + .../xNode/Scripts/Editor/NodeEditor.cs.meta | 12 + .../xNode/Scripts/Editor/NodeEditorAction.cs | 472 + .../Scripts/Editor/NodeEditorAction.cs.meta | 12 + .../Editor/NodeEditorAssetModProcessor.cs | 59 + .../NodeEditorAssetModProcessor.cs.meta | 12 + .../xNode/Scripts/Editor/NodeEditorBase.cs | 63 + .../Scripts/Editor/NodeEditorBase.cs.meta | 13 + .../xNode/Scripts/Editor/NodeEditorGUI.cs | 419 + .../Scripts/Editor/NodeEditorGUI.cs.meta | 11 + .../Scripts/Editor/NodeEditorGUILayout.cs | 441 + .../Editor/NodeEditorGUILayout.cs.meta | 12 + .../Scripts/Editor/NodeEditorPreferences.cs | 220 + .../Editor/NodeEditorPreferences.cs.meta | 12 + .../Scripts/Editor/NodeEditorReflection.cs | 165 + .../Editor/NodeEditorReflection.cs.meta | 12 + .../Scripts/Editor/NodeEditorResources.cs | 87 + .../Editor/NodeEditorResources.cs.meta | 12 + .../Scripts/Editor/NodeEditorUtilities.cs | 217 + .../Editor/NodeEditorUtilities.cs.meta | 12 + .../xNode/Scripts/Editor/NodeEditorWindow.cs | 165 + .../Scripts/Editor/NodeEditorWindow.cs.meta | 12 + .../xNode/Scripts/Editor/NodeGraphEditor.cs | 108 + .../Scripts/Editor/NodeGraphEditor.cs.meta | 12 + .../Core/xNode/Scripts/Editor/Resources.meta | 9 + .../Editor/Resources/ScriptTemplates.meta | 10 + .../xNode_NodeGraphTemplate.cs.txt | 9 + .../xNode_NodeGraphTemplate.cs.txt.meta | 9 + .../ScriptTemplates/xNode_NodeTemplate.cs.txt | 18 + .../xNode_NodeTemplate.cs.txt.meta | 9 + .../Scripts/Editor/Resources/xnode_dot.png | Bin 0 -> 18297 bytes .../Editor/Resources/xnode_dot.png.meta | 57 + .../Editor/Resources/xnode_dot_outer.png | Bin 0 -> 18346 bytes .../Editor/Resources/xnode_dot_outer.png.meta | 57 + .../Scripts/Editor/Resources/xnode_node.png | Bin 0 -> 20154 bytes .../Editor/Resources/xnode_node.png.meta | 57 + .../Editor/Resources/xnode_node_highlight.png | Bin 0 -> 20433 bytes .../Resources/xnode_node_highlight.png.meta | 57 + .../Editor/Resources/xnode_node_workfile.psd | Bin 0 -> 33860 bytes .../Resources/xnode_node_workfile.psd.meta | 57 + .../TinaX/Vendor/Core/xNode/Scripts/Node.cs | 329 + .../Vendor/Core/xNode/Scripts/Node.cs.meta | 12 + .../Core/xNode/Scripts/NodeDataCache.cs | 129 + .../Core/xNode/Scripts/NodeDataCache.cs.meta | 12 + .../Vendor/Core/xNode/Scripts/NodeGraph.cs | 85 + .../Core/xNode/Scripts/NodeGraph.cs.meta | 12 + .../Vendor/Core/xNode/Scripts/NodePort.cs | 399 + .../Core/xNode/Scripts/NodePort.cs.meta | 12 + EditorRes/Logo.psd | Bin 0 -> 262534 bytes .../I18N\350\241\250.xlsx" | Bin 0 -> 11961 bytes .../\351\205\215\350\241\250/UISafeArea.xlsx" | Bin 0 -> 11535 bytes .../UISafeArea.xlsx.json" | 1 + LICENSE | 71 + Packages/manifest.json | 50 + ProjectSettings/AudioManager.asset | 17 + ProjectSettings/ClusterInputManager.asset | 6 + ProjectSettings/DynamicsManager.asset | 30 + ProjectSettings/EditorBuildSettings.asset | 23 + ProjectSettings/EditorSettings.asset | 23 + ProjectSettings/GraphicsSettings.asset | 65 + ProjectSettings/InputManager.asset | 295 + ProjectSettings/NavMeshAreas.asset | 91 + ProjectSettings/NetworkManager.asset | 8 + ProjectSettings/Physics2DSettings.asset | 38 + ProjectSettings/PresetManager.asset | 27 + ProjectSettings/ProjectSettings.asset | 659 ++ ProjectSettings/ProjectVersion.txt | 2 + ProjectSettings/QualitySettings.asset | 221 + ProjectSettings/TagManager.asset | 43 + ProjectSettings/TimeManager.asset | 9 + ProjectSettings/UnityConnectSettings.asset | 34 + ProjectSettings/VFXManager.asset | 11 + ProjectSettings/XRSettings.asset | 10 + 1497 files changed, 160675 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/----.md create mode 100644 .github/ISSUE_TEMPLATE/--bug.md create mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .gitignore create mode 100644 Assets/Resources.meta create mode 100644 Assets/Resources/TinaX.meta create mode 100644 Assets/Resources/TinaX/Config.meta create mode 100644 Assets/Resources/TinaX/Config/i18n.asset create mode 100644 Assets/Resources/TinaX/Config/i18n.asset.meta create mode 100644 Assets/Resources/TinaX/Config/tinax_base_config.asset create mode 100644 Assets/Resources/TinaX/Config/tinax_base_config.asset.meta create mode 100644 Assets/Resources/TinaX/Config/tinax_config.asset create mode 100644 Assets/Resources/TinaX/Config/tinax_config.asset.meta create mode 100644 Assets/Resources/TinaX/Config/uikit.asset create mode 100644 Assets/Resources/TinaX/Config/uikit.asset.meta create mode 100644 Assets/Resources/TinaX/Config/upgrade.asset create mode 100644 Assets/Resources/TinaX/Config/upgrade.asset.meta create mode 100644 Assets/Resources/TinaX/Config/vfs.asset create mode 100644 Assets/Resources/TinaX/Config/vfs.asset.meta create mode 100644 Assets/TinaX.meta create mode 100644 Assets/TinaX/Core.meta create mode 100644 Assets/TinaX/Core/Assembly.meta create mode 100644 Assets/TinaX/Core/Assembly/Config.meta create mode 100644 Assets/TinaX/Core/Assembly/Config/Config.cs create mode 100644 Assets/TinaX/Core/Assembly/Config/Config.cs.meta create mode 100644 Assets/TinaX/Core/Assembly/Encry.meta create mode 100644 Assets/TinaX/Core/Assembly/Encry/Encry.cs create mode 100644 Assets/TinaX/Core/Assembly/Encry/Encry.cs.meta create mode 100644 Assets/TinaX/Core/Assembly/IO.meta create mode 100644 Assets/TinaX/Core/Assembly/IO/XFile.cs create mode 100644 Assets/TinaX/Core/Assembly/IO/XFile.cs.meta create mode 100644 Assets/TinaX/Core/Assembly/IO/XFolder.cs create mode 100644 Assets/TinaX/Core/Assembly/IO/XFolder.cs.meta create mode 100644 Assets/TinaX/Core/Assembly/Platform.meta create mode 100644 Assets/TinaX/Core/Assembly/Platform/Platform.cs create mode 100644 Assets/TinaX/Core/Assembly/Platform/Platform.cs.meta create mode 100644 Assets/TinaX/Core/Assembly/TinaXUtil.meta create mode 100644 Assets/TinaX/Core/Assembly/TinaXUtil/msgbox.meta create mode 100644 Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs create mode 100644 Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs.meta create mode 100644 Assets/TinaX/Core/Config.meta create mode 100644 Assets/TinaX/Core/Config/ConfigPath.cs create mode 100644 Assets/TinaX/Core/Config/ConfigPath.cs.meta create mode 100644 Assets/TinaX/Core/ConfigModel.meta create mode 100644 Assets/TinaX/Core/ConfigModel/MainConfig.cs create mode 100644 Assets/TinaX/Core/ConfigModel/MainConfig.cs.meta create mode 100644 Assets/TinaX/Core/ConfigModel/XBaseConfig.cs create mode 100644 Assets/TinaX/Core/ConfigModel/XBaseConfig.cs.meta create mode 100644 Assets/TinaX/Core/Const.meta create mode 100644 Assets/TinaX/Core/Const/AssetSystemConst.cs create mode 100644 Assets/TinaX/Core/Const/AssetSystemConst.cs.meta create mode 100644 Assets/TinaX/Core/Const/EventDefine.cs create mode 100644 Assets/TinaX/Core/Const/EventDefine.cs.meta create mode 100644 Assets/TinaX/Core/Const/PlatformConst.cs create mode 100644 Assets/TinaX/Core/Const/PlatformConst.cs.meta create mode 100644 Assets/TinaX/Core/Const/SharpDefineConst.cs create mode 100644 Assets/TinaX/Core/Const/SharpDefineConst.cs.meta create mode 100644 Assets/TinaX/Core/Core.meta create mode 100644 Assets/TinaX/Core/Core/XApp.cs create mode 100644 Assets/TinaX/Core/Core/XApp.cs.meta create mode 100644 Assets/TinaX/Core/Core/XBootstrap.cs create mode 100644 Assets/TinaX/Core/Core/XBootstrap.cs.meta create mode 100644 Assets/TinaX/Core/Core/XCore.cs create mode 100644 Assets/TinaX/Core/Core/XCore.cs.meta create mode 100644 Assets/TinaX/Core/Core/XStart.cs create mode 100644 Assets/TinaX/Core/Core/XStart.cs.meta create mode 100644 Assets/TinaX/Core/EditorExt.meta create mode 100644 Assets/TinaX/Core/EditorExt/StyleDefine.meta create mode 100644 Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs create mode 100644 Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs.meta create mode 100644 Assets/TinaX/Core/Extend.meta create mode 100644 Assets/TinaX/Core/Extend/DotNet.meta create mode 100644 Assets/TinaX/Core/Extend/DotNet/String.meta create mode 100644 Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs create mode 100644 Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs.meta create mode 100644 Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs create mode 100644 Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/Enum.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/GameObject.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs.meta create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs create mode 100644 Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs.meta create mode 100644 Assets/TinaX/Core/Setup.meta create mode 100644 Assets/TinaX/Core/Setup/FrameworkInfo.cs create mode 100644 Assets/TinaX/Core/Setup/FrameworkInfo.cs.meta create mode 100644 Assets/TinaX/Core/Setup/Setup.cs create mode 100644 Assets/TinaX/Core/Setup/Setup.cs.meta create mode 100644 Assets/TinaX/Core/System.meta create mode 100644 Assets/TinaX/Core/System/Event.meta create mode 100644 Assets/TinaX/Core/System/Event/Event.cs create mode 100644 Assets/TinaX/Core/System/Event/Event.cs.meta create mode 100644 Assets/TinaX/Core/System/I18N.meta create mode 100644 Assets/TinaX/Core/System/I18N/Config.meta create mode 100644 Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs create mode 100644 Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs.meta create mode 100644 Assets/TinaX/Core/System/I18N/Editor.meta create mode 100644 Assets/TinaX/Core/System/I18N/Editor/Script.meta create mode 100644 Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs create mode 100644 Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs.meta create mode 100644 Assets/TinaX/Core/System/I18N/Script.meta create mode 100644 Assets/TinaX/Core/System/I18N/Script/I18NCat.cs create mode 100644 Assets/TinaX/Core/System/I18N/Script/I18NCat.cs.meta create mode 100644 Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs create mode 100644 Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs.meta create mode 100644 Assets/TinaX/Core/System/I18N/Script/IXI18N.cs create mode 100644 Assets/TinaX/Core/System/I18N/Script/IXI18N.cs.meta create mode 100644 Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs create mode 100644 Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/Logger.meta create mode 100644 Assets/TinaX/Core/System/Logger/Config.meta create mode 100644 Assets/TinaX/Core/System/Logger/Config/LogConfig.cs create mode 100644 Assets/TinaX/Core/System/Logger/Config/LogConfig.cs.meta create mode 100644 Assets/TinaX/Core/System/Logger/Script.meta create mode 100644 Assets/TinaX/Core/System/Logger/Script/XLog.cs create mode 100644 Assets/TinaX/Core/System/Logger/Script/XLog.cs.meta create mode 100644 Assets/TinaX/Core/System/Lua.meta create mode 100644 Assets/TinaX/Core/System/Lua/Config.meta create mode 100644 Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs create mode 100644 Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs.meta create mode 100644 Assets/TinaX/Core/System/Lua/Editor.meta create mode 100644 Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs create mode 100644 Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs.meta create mode 100644 Assets/TinaX/Core/System/Lua/Script.meta create mode 100644 Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs create mode 100644 Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs.meta create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs.meta create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaCat.cs create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaCat.cs.meta create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaManager.cs create mode 100644 Assets/TinaX/Core/System/Lua/Script/LuaManager.cs.meta create mode 100644 Assets/TinaX/Core/System/Scene.meta create mode 100644 Assets/TinaX/Core/System/Scene/ISceneManager.cs create mode 100644 Assets/TinaX/Core/System/Scene/ISceneManager.cs.meta create mode 100644 Assets/TinaX/Core/System/Scene/SceneMgr.cs create mode 100644 Assets/TinaX/Core/System/Scene/SceneMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/Scene/SceneProvide.cs create mode 100644 Assets/TinaX/Core/System/Scene/SceneProvide.cs.meta create mode 100644 Assets/TinaX/Core/System/Scene/XSceneManager.cs create mode 100644 Assets/TinaX/Core/System/Scene/XSceneManager.cs.meta create mode 100644 Assets/TinaX/Core/System/ServiceRegister.cs create mode 100644 Assets/TinaX/Core/System/ServiceRegister.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound.meta create mode 100644 Assets/TinaX/Core/System/Sound/Const.meta create mode 100644 Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs create mode 100644 Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Nodes.meta create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/Editor.meta create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs create mode 100644 Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Script.meta create mode 100644 Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs create mode 100644 Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Script/IXSound.cs create mode 100644 Assets/TinaX/Core/System/Sound/Script/IXSound.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs create mode 100644 Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Script/SoundCat.cs create mode 100644 Assets/TinaX/Core/System/Sound/Script/SoundCat.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs create mode 100644 Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs.meta create mode 100644 Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs create mode 100644 Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/TaskManager.meta create mode 100644 Assets/TinaX/Core/System/TaskManager/Cat.meta create mode 100644 Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs create mode 100644 Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs.meta create mode 100644 Assets/TinaX/Core/System/TaskManager/Interface.meta create mode 100644 Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs create mode 100644 Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs.meta create mode 100644 Assets/TinaX/Core/System/TaskManager/Script.meta create mode 100644 Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs create mode 100644 Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs create mode 100644 Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs.meta create mode 100644 Assets/TinaX/Core/System/TimeMachine.meta create mode 100644 Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs create mode 100644 Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs.meta create mode 100644 Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs create mode 100644 Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs.meta create mode 100644 Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs create mode 100644 Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs.meta create mode 100644 Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs create mode 100644 Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Config.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Const.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIBase.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIBase.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UISafeArea.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs.meta create mode 100644 Assets/TinaX/Core/System/UIKit/Script/XUIMgrGateway.cs create mode 100644 Assets/TinaX/Core/System/UIKit/Script/XUIMgrGateway.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Config.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Config/UpgradeConfig.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/Config/UpgradeConfig.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Const.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Const/UpgradeLanguage.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/Const/UpgradeLanguage.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/JsonTPL.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/JsonTPL/LocalVersionInfo.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/JsonTPL/LocalVersionInfo.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/JsonTPL/StaticUpgradeConfigJsonTpl.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/JsonTPL/StaticUpgradeConfigJsonTpl.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Script.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Script/UpdateScreen.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/Script/UpdateScreen.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Script/UpgradeHandleStaticWeb.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/Script/UpgradeHandleStaticWeb.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/Script/UpgradeMgr.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/Script/UpgradeMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/UIScript.meta create mode 100644 Assets/TinaX/Core/System/Upgrade/UIScript/AutoUpgradeUI.cs create mode 100644 Assets/TinaX/Core/System/Upgrade/UIScript/AutoUpgradeUI.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS.meta create mode 100644 Assets/TinaX/Core/System/VFS/ConfigModel.meta create mode 100644 Assets/TinaX/Core/System/VFS/ConfigModel/VFSConfigModel.cs create mode 100644 Assets/TinaX/Core/System/VFS/ConfigModel/VFSConfigModel.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Const.meta create mode 100644 Assets/TinaX/Core/System/VFS/Const/AssetRuleConst.cs create mode 100644 Assets/TinaX/Core/System/VFS/Const/AssetRuleConst.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Const/UpdateConst.cs create mode 100644 Assets/TinaX/Core/System/VFS/Const/UpdateConst.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Const/UpdateScreenString.cs create mode 100644 Assets/TinaX/Core/System/VFS/Const/UpdateScreenString.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Editor.meta create mode 100644 Assets/TinaX/Core/System/VFS/Editor/AssetInputHandle.cs create mode 100644 Assets/TinaX/Core/System/VFS/Editor/AssetInputHandle.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Editor/AssetLoadedDebugPad.cs create mode 100644 Assets/TinaX/Core/System/VFS/Editor/AssetLoadedDebugPad.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Editor/ProjectSetting.meta create mode 100644 Assets/TinaX/Core/System/VFS/Editor/ProjectSetting/PSVFSConfig.cs create mode 100644 Assets/TinaX/Core/System/VFS/Editor/ProjectSetting/PSVFSConfig.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Enum.meta create mode 100644 Assets/TinaX/Core/System/VFS/Enum/EnumUpgradeCommon.cs create mode 100644 Assets/TinaX/Core/System/VFS/Enum/EnumUpgradeCommon.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Script.meta create mode 100644 Assets/TinaX/Core/System/VFS/Script/AssetParse.cs create mode 100644 Assets/TinaX/Core/System/VFS/Script/AssetParse.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Script/AssetsProvide.cs create mode 100644 Assets/TinaX/Core/System/VFS/Script/AssetsProvide.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Script/IAssetsManager.cs create mode 100644 Assets/TinaX/Core/System/VFS/Script/IAssetsManager.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Script/VFSConfigCache.cs create mode 100644 Assets/TinaX/Core/System/VFS/Script/VFSConfigCache.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Script/XAssetBundleMgr.cs create mode 100644 Assets/TinaX/Core/System/VFS/Script/XAssetBundleMgr.cs.meta create mode 100644 Assets/TinaX/Core/System/VFS/Script/XAssetsManager.cs create mode 100644 Assets/TinaX/Core/System/VFS/Script/XAssetsManager.cs.meta create mode 100644 Assets/TinaX/Editor.meta create mode 100644 Assets/TinaX/Editor/Config.meta create mode 100644 Assets/TinaX/Editor/Config/ConfigMenu.cs create mode 100644 Assets/TinaX/Editor/Config/ConfigMenu.cs.meta create mode 100644 Assets/TinaX/Editor/IO.meta create mode 100644 Assets/TinaX/Editor/IO/Folder.cs create mode 100644 Assets/TinaX/Editor/IO/Folder.cs.meta create mode 100644 Assets/TinaX/Editor/IO/Path.cs create mode 100644 Assets/TinaX/Editor/IO/Path.cs.meta create mode 100644 Assets/TinaX/Editor/Res.meta create mode 100644 Assets/TinaX/Editor/Res/icon.meta create mode 100644 Assets/TinaX/Editor/Res/icon/cat.png create mode 100644 Assets/TinaX/Editor/Res/icon/cat.png.meta create mode 100644 Assets/TinaX/Editor/Res/icon/dialog.png create mode 100644 Assets/TinaX/Editor/Res/icon/dialog.png.meta create mode 100644 Assets/TinaX/Editor/Res/icon/lua.png create mode 100644 Assets/TinaX/Editor/Res/icon/lua.png.meta create mode 100644 Assets/TinaX/Editor/Res/icon/pawprint.png create mode 100644 Assets/TinaX/Editor/Res/icon/pawprint.png.meta create mode 100644 Assets/TinaX/Editor/Res/icon/set.png create mode 100644 Assets/TinaX/Editor/Res/icon/set.png.meta create mode 100644 Assets/TinaX/Editor/Res/icon/setup.png create mode 100644 Assets/TinaX/Editor/Res/icon/setup.png.meta create mode 100644 Assets/TinaX/Editor/Res/icon/uiedit.png create mode 100644 Assets/TinaX/Editor/Res/icon/uiedit.png.meta create mode 100644 Assets/TinaX/Editor/Res/img.meta create mode 100644 Assets/TinaX/Editor/Res/img/splash.png create mode 100644 Assets/TinaX/Editor/Res/img/splash.png.meta create mode 100644 Assets/TinaX/Editor/Setup.meta create mode 100644 Assets/TinaX/Editor/Setup/FrameworkSetup.cs create mode 100644 Assets/TinaX/Editor/Setup/FrameworkSetup.cs.meta create mode 100644 Assets/TinaX/Editor/Setup/SystemInstallRegister.cs create mode 100644 Assets/TinaX/Editor/Setup/SystemInstallRegister.cs.meta create mode 100644 Assets/TinaX/Editor/System.meta create mode 100644 Assets/TinaX/Editor/System/AssetsPro.meta create mode 100644 Assets/TinaX/Editor/System/AssetsPro/Window.meta create mode 100644 Assets/TinaX/Editor/System/AssetsPro/Window/ABExplorer.cs create mode 100644 Assets/TinaX/Editor/System/AssetsPro/Window/ABExplorer.cs.meta create mode 100644 Assets/TinaX/Editor/System/AssetsPro/Window/ABReader.cs create mode 100644 Assets/TinaX/Editor/System/AssetsPro/Window/ABReader.cs.meta create mode 100644 Assets/TinaX/Editor/System/DevOps.meta create mode 100644 Assets/TinaX/Editor/System/DevOps/Script.meta create mode 100644 Assets/TinaX/Editor/System/DevOps/Script/DevOpsBuild.cs create mode 100644 Assets/TinaX/Editor/System/DevOps/Script/DevOpsBuild.cs.meta create mode 100644 Assets/TinaX/Editor/System/DevOps/Script/SharpDefineDefaults.cs create mode 100644 Assets/TinaX/Editor/System/DevOps/Script/SharpDefineDefaults.cs.meta create mode 100644 Assets/TinaX/Editor/System/DevOps/Script/SharpDefineReadWriteUtils.cs create mode 100644 Assets/TinaX/Editor/System/DevOps/Script/SharpDefineReadWriteUtils.cs.meta create mode 100644 Assets/TinaX/Editor/System/DevOps/UI.meta create mode 100644 Assets/TinaX/Editor/System/DevOps/UI/DevOpsBuildWindow.cs create mode 100644 Assets/TinaX/Editor/System/DevOps/UI/DevOpsBuildWindow.cs.meta create mode 100644 Assets/TinaX/Editor/System/DevOps/UI/SharpDefineReadWriteWindow.cs create mode 100644 Assets/TinaX/Editor/System/DevOps/UI/SharpDefineReadWriteWindow.cs.meta create mode 100644 Assets/TinaX/Editor/System/LuaScript.meta create mode 100644 Assets/TinaX/Editor/System/LuaScript/ChangeLuaFileExtName.cs create mode 100644 Assets/TinaX/Editor/System/LuaScript/ChangeLuaFileExtName.cs.meta create mode 100644 Assets/TinaX/Editor/System/VFS.meta create mode 100644 Assets/TinaX/Editor/System/VFS/JsonModel.meta create mode 100644 Assets/TinaX/Editor/System/VFS/JsonModel/VFSPatchConfigModel.cs create mode 100644 Assets/TinaX/Editor/System/VFS/JsonModel/VFSPatchConfigModel.cs.meta create mode 100644 Assets/TinaX/Editor/System/VFS/JsonModel/VFSPatchInfoModel.cs create mode 100644 Assets/TinaX/Editor/System/VFS/JsonModel/VFSPatchInfoModel.cs.meta create mode 100644 Assets/TinaX/Editor/System/VFS/Script.meta create mode 100644 Assets/TinaX/Editor/System/VFS/Script/AssetPackageMgr.cs create mode 100644 Assets/TinaX/Editor/System/VFS/Script/AssetPackageMgr.cs.meta create mode 100644 Assets/TinaX/Editor/System/VFS/Script/VFSPatchPackage.cs create mode 100644 Assets/TinaX/Editor/System/VFS/Script/VFSPatchPackage.cs.meta create mode 100644 Assets/TinaX/Editor/System/VFS/Windows.meta create mode 100644 Assets/TinaX/Editor/System/VFS/Windows/AssetPackageWindow.cs create mode 100644 Assets/TinaX/Editor/System/VFS/Windows/AssetPackageWindow.cs.meta create mode 100644 Assets/TinaX/Editor/System/VFS/Windows/VFSFolderMgrWindow.cs create mode 100644 Assets/TinaX/Editor/System/VFS/Windows/VFSFolderMgrWindow.cs.meta create mode 100644 Assets/TinaX/Editor/System/VFS/Windows/VFSPatchWindow.cs create mode 100644 Assets/TinaX/Editor/System/VFS/Windows/VFSPatchWindow.cs.meta create mode 100644 Assets/TinaX/Editor/UI.meta create mode 100644 Assets/TinaX/Editor/UI/AboutTinaX.meta create mode 100644 Assets/TinaX/Editor/UI/AboutTinaX/AboutTinaXUI.cs create mode 100644 Assets/TinaX/Editor/UI/AboutTinaX/AboutTinaXUI.cs.meta create mode 100644 Assets/TinaX/Editor/UI/ConfWindow.meta create mode 100644 Assets/TinaX/Editor/UI/ConfWindow/TinaXConfWindow.cs create mode 100644 Assets/TinaX/Editor/UI/ConfWindow/TinaXConfWindow.cs.meta create mode 100644 Assets/TinaX/Editor/UI/ConfWindow/TinaXConfWithoutOdin.cs create mode 100644 Assets/TinaX/Editor/UI/ConfWindow/TinaXConfWithoutOdin.cs.meta create mode 100644 Assets/TinaX/Editor/Vendor.meta create mode 100644 Assets/TinaX/Editor/Vendor/Core.meta create mode 100644 Assets/TinaX/Editor/Vendor/Core/ToolbarExtender.meta create mode 100644 Assets/TinaX/Editor/Vendor/Core/ToolbarExtender/Scripts.meta create mode 100644 Assets/TinaX/Editor/Vendor/Core/ToolbarExtender/Scripts/Editor.meta create mode 100644 Assets/TinaX/Editor/Vendor/Core/ToolbarExtender/Scripts/Editor/ToolbarCallback.cs create mode 100644 Assets/TinaX/Editor/Vendor/Core/ToolbarExtender/Scripts/Editor/ToolbarCallback.cs.meta create mode 100644 Assets/TinaX/Editor/Vendor/Core/ToolbarExtender/Scripts/Editor/ToolbarExtender.cs create mode 100644 Assets/TinaX/Editor/Vendor/Core/ToolbarExtender/Scripts/Editor/ToolbarExtender.cs.meta create mode 100644 Assets/TinaX/GameKit.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Common.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Common/Node.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Common/Node/NodeAppendString.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Common/Node/NodeAppendString.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Editor.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Editor/DialoguePreviewPlayer.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Editor/DialoguePreviewPlayer.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/DialogueBaseNode.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/DialogueBaseNode.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/DialogueBluePrint.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/DialogueBluePrint.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueBluePrintEditor.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueBluePrintEditor.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueChooseEditor.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueChooseEditor.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueContentEditor.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueContentEditor.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueStartEditor.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/Editor/DialogueStartEditor.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/api.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/api/IDialogChoose.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/api/IDialogChoose.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/api/IDialogContent.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/api/IDialogContent.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueChoose.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueChoose.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueContent.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueContent.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueFinish.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueFinish.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueJumpTo.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueJumpTo.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueKnot.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueKnot.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueStart.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/behavior/DialogueStart.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/describe.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/describe/DialogueGetString.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Nodes/describe/DialogueGetString.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Script.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Script/DialoguePlayer.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Script/DialoguePlayer.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Script/IDialoguePlayer.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Script/IDialoguePlayer.cs.meta create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Script/IPlayerForNode.cs create mode 100644 Assets/TinaX/GameKit/DramaDesigner/Dialogue/Script/IPlayerForNode.cs.meta create mode 100644 Assets/TinaX/GameKit/UITools.meta create mode 100644 Assets/TinaX/GameKit/UITools/PageView.meta create mode 100644 Assets/TinaX/GameKit/UITools/PageView/PageViewMark.cs create mode 100644 Assets/TinaX/GameKit/UITools/PageView/PageViewMark.cs.meta create mode 100644 Assets/TinaX/GameKit/UITools/PageView/Script.meta create mode 100644 Assets/TinaX/GameKit/UITools/PageView/Script/XPageView.cs create mode 100644 Assets/TinaX/GameKit/UITools/PageView/Script/XPageView.cs.meta create mode 100644 Assets/TinaX/Lua.meta create mode 100644 Assets/TinaX/Lua/core.meta create mode 100644 Assets/TinaX/Lua/core/init.lua.txt create mode 100644 Assets/TinaX/Lua/core/init.lua.txt.meta create mode 100644 Assets/TinaX/Lua/core/xcore.lua.txt create mode 100644 Assets/TinaX/Lua/core/xcore.lua.txt.meta create mode 100644 Assets/TinaX/Lua/debug.meta create mode 100644 Assets/TinaX/Lua/debug/luaide.meta create mode 100644 Assets/TinaX/Lua/debug/luaide/LuaDebug.lua.txt create mode 100644 Assets/TinaX/Lua/debug/luaide/LuaDebug.lua.txt.meta create mode 100644 Assets/TinaX/Lua/extend.meta create mode 100644 Assets/TinaX/Lua/extend/class.lua.txt create mode 100644 Assets/TinaX/Lua/extend/class.lua.txt.meta create mode 100644 Assets/TinaX/Lua/extend/logger.lua.txt create mode 100644 Assets/TinaX/Lua/extend/logger.lua.txt.meta create mode 100644 Assets/TinaX/Lua/extend/string.lua.txt create mode 100644 Assets/TinaX/Lua/extend/string.lua.txt.meta create mode 100644 Assets/TinaX/Lua/extend/table.lua.txt create mode 100644 Assets/TinaX/Lua/extend/table.lua.txt.meta create mode 100644 Assets/TinaX/Lua/system.meta create mode 100644 Assets/TinaX/Lua/system/asset.lua.txt create mode 100644 Assets/TinaX/Lua/system/asset.lua.txt.meta create mode 100644 Assets/TinaX/Lua/system/event.lua.txt create mode 100644 Assets/TinaX/Lua/system/event.lua.txt.meta create mode 100644 Assets/TinaX/Lua/system/i18n.lua.txt create mode 100644 Assets/TinaX/Lua/system/i18n.lua.txt.meta create mode 100644 Assets/TinaX/Lua/system/scene.lua.txt create mode 100644 Assets/TinaX/Lua/system/scene.lua.txt.meta create mode 100644 Assets/TinaX/Lua/system/sound.lua.txt create mode 100644 Assets/TinaX/Lua/system/sound.lua.txt.meta create mode 100644 Assets/TinaX/Lua/system/uikit.lua.txt create mode 100644 Assets/TinaX/Lua/system/uikit.lua.txt.meta create mode 100644 Assets/TinaX/Lua/utils.meta create mode 100644 Assets/TinaX/Lua/utils/reload.meta create mode 100644 Assets/TinaX/Lua/utils/reload/reloadutil.txt create mode 100644 Assets/TinaX/Lua/utils/reload/reloadutil.txt.meta create mode 100644 Assets/TinaX/Resources.meta create mode 100644 Assets/TinaX/Resources/TinaX.meta create mode 100644 Assets/TinaX/Resources/TinaX/Common.meta create mode 100644 Assets/TinaX/Resources/TinaX/Common/MsgBox_hor.prefab create mode 100644 Assets/TinaX/Resources/TinaX/Common/MsgBox_hor.prefab.meta create mode 100644 Assets/TinaX/Resources/TinaX/Common/MsgBox_ver.prefab create mode 100644 Assets/TinaX/Resources/TinaX/Common/MsgBox_ver.prefab.meta create mode 100644 Assets/TinaX/Resources/TinaX/Update.meta create mode 100644 Assets/TinaX/Resources/TinaX/Update/UpgradeScreen_Hor.prefab create mode 100644 Assets/TinaX/Resources/TinaX/Update/UpgradeScreen_Hor.prefab.meta create mode 100644 Assets/TinaX/Resources/TinaX/Update/UpgradeScreen_Ver.prefab create mode 100644 Assets/TinaX/Resources/TinaX/Update/UpgradeScreen_Ver.prefab.meta create mode 100644 Assets/TinaX/Vendor.meta create mode 100644 Assets/TinaX/Vendor/Core.meta create mode 100644 Assets/TinaX/Vendor/Core/CatLib.meta create mode 100644 Assets/TinaX/Vendor/Core/CatLib/CatLib.Core.deps.json create mode 100644 Assets/TinaX/Vendor/Core/CatLib/CatLib.Core.deps.json.meta create mode 100644 Assets/TinaX/Vendor/Core/CatLib/CatLib.Core.dll create mode 100644 Assets/TinaX/Vendor/Core/CatLib/CatLib.Core.dll.meta create mode 100644 Assets/TinaX/Vendor/Core/CatLib/CatLib.Core.xml create mode 100644 Assets/TinaX/Vendor/Core/CatLib/CatLib.Core.xml.meta create mode 100644 Assets/TinaX/Vendor/Core/CatLib/x_version.json create mode 100644 Assets/TinaX/Vendor/Core/CatLib/x_version.json.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/AOT.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.XML.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/AOT/Newtonsoft.Json.dll.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Standalone.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.XML.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Standalone/Newtonsoft.Json.dll.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Windows.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.XML.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Assemblies/Windows/Newtonsoft.Json.dll.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Documentation.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/Documentation/Json Net for Unity 2.0.1.pdf.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/link.xml create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/link.xml.meta create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/x_version.json create mode 100644 Assets/TinaX/Vendor/Core/JsonDotNet/x_version.json.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2Constants.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2Constants.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2Exception.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2Exception.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2InputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2InputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2OutputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/BZip2/BZip2OutputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/Adler32.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/Adler32.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/BZip2Crc.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/BZip2Crc.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/Crc32.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/Crc32.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/IChecksum.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Checksum/IChecksum.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/SharpZipBaseException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/SharpZipBaseException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/StreamDecodingException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/StreamDecodingException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/StreamUnsupportedException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/StreamUnsupportedException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/UnexpectedEndOfStreamException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/UnexpectedEndOfStreamException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/ValueOutOfRangeException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/Exceptions/ValueOutOfRangeException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/FileSystemScanner.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/FileSystemScanner.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/INameTransform.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/INameTransform.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/IScanFilter.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/IScanFilter.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/InvalidNameException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/InvalidNameException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/NameFilter.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/NameFilter.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/PathFilter.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/PathFilter.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/StreamUtils.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/StreamUtils.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/WindowsPathUtils.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Core/WindowsPathUtils.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Encryption.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Encryption/PkzipClassic.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Encryption/PkzipClassic.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Encryption/ZipAESStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Encryption/ZipAESStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Encryption/ZipAESTransform.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Encryption/ZipAESTransform.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GZip.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GZip.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GZipConstants.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GZipConstants.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GZipException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GZipException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GzipInputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GzipInputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GzipOutputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/GZip/GzipOutputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Lzw.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Lzw/LzwConstants.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Lzw/LzwConstants.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Lzw/LzwException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Lzw/LzwException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Lzw/LzwInputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Lzw/LzwInputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/InvalidHeaderException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/InvalidHeaderException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarArchive.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarArchive.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarBuffer.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarBuffer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarEntry.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarEntry.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarExtendedHeaderReader.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarExtendedHeaderReader.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarHeader.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarHeader.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarInputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarInputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarOutputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Tar/TarOutputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Deflater.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Deflater.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterConstants.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterConstants.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterEngine.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterEngine.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterHuffman.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterHuffman.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterPending.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/DeflaterPending.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Inflater.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Inflater.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/InflaterDynHeader.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/InflaterDynHeader.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/InflaterHuffmanTree.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/InflaterHuffmanTree.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/PendingBuffer.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/PendingBuffer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/DeflaterOutputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/DeflaterOutputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/InflaterInputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/InflaterInputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/OutputWindow.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/OutputWindow.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/StreamManipulator.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/Compression/Streams/StreamManipulator.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/FastZip.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/FastZip.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/IEntryFactory.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/IEntryFactory.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/WindowsNameTransform.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/WindowsNameTransform.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipConstants.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipConstants.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipEntry.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipEntry.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipEntryFactory.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipEntryFactory.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipException.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipException.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipExtraData.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipExtraData.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipFile.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipFile.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipHelperStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipHelperStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipInputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipInputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipNameTransform.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipNameTransform.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipOutputStream.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipOutputStream.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipStrings.cs create mode 100644 Assets/TinaX/Vendor/Core/SharpZipLib/Zip/ZipStrings.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample01_ObservableWWW.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample01_ObservableWWW.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample02_ObservableTriggers.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample02_ObservableTriggers.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample03_GameObjectAsObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample03_GameObjectAsObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample04_ConvertFromUnityCallback.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample04_ConvertFromUnityCallback.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample05_ConvertFromCoroutine.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample05_ConvertFromCoroutine.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample06_ConvertToCoroutine.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample06_ConvertToCoroutine.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample07_OrchestratIEnumerator.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample07_OrchestratIEnumerator.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample08_DetectDoubleClick.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample08_DetectDoubleClick.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample09_EventHandling.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample09_EventHandling.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample10_MainThreadDispatcher.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample10_MainThreadDispatcher.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample11_Logger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample11_Logger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample12Scene.unity create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample12Scene.unity.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample12_ReactiveProperty.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample12_ReactiveProperty.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample13Scene.unity create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample13Scene.unity.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample13_ToDoApp.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/Sample13_ToDoApp.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/UniRx.Examples.asmdef create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Examples/UniRx.Examples.asmdef.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Asynchronous.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Asynchronous/WebRequestExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Asynchronous/WebRequestExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/BooleanDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/BooleanDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/CancellationDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/CancellationDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/CompositeDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/CompositeDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/DictionaryDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/DictionaryDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/Disposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/Disposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/DisposableExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/DisposableExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/ICancelable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/ICancelable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/MultipleAssignmentDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/MultipleAssignmentDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/RefCountDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/RefCountDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/ScheduledDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/ScheduledDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/SerialDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/SerialDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/SingleAssignmentDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/SingleAssignmentDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/StableCompositeDisposable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Disposables/StableCompositeDisposable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/EventPattern.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/EventPattern.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/AscynLock.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/AscynLock.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/CancellableTaskCompletionSource.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/CancellableTaskCompletionSource.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ExceptionExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ExceptionExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ImmutableList.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ImmutableList.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ListObserver.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ListObserver.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/MicroCoroutine.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/MicroCoroutine.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/PriorityQueue.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/PriorityQueue.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/PromiseHelper.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/PromiseHelper.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ScheduledItem.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ScheduledItem.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ThreadSafeQueueWorker.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/ThreadSafeQueueWorker.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/UnityEqualityComparer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/InternalUtil/UnityEqualityComparer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notification.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notification.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/BooleanNotifier.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/BooleanNotifier.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/CountNotifier.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/CountNotifier.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/MessageBroker.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/MessageBroker.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/ScheduledNotifier.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Notifiers/ScheduledNotifier.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Aggregate.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Aggregate.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Awaiter.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Awaiter.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Binding.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Binding.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Blocking.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Blocking.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Concatenate.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Concatenate.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Concurrency.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Concurrency.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Conversions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Conversions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Creation.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Creation.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.ErrorHandling.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.ErrorHandling.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Events.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Events.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.FromAsync.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.FromAsync.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Joins.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Joins.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Paging.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Paging.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Time.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.Time.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Observer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Aggregate.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Aggregate.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Amb.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Amb.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/AsObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/AsObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/AsSingleUnitObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/AsSingleUnitObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/AsUnitObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/AsUnitObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Buffer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Buffer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Cast.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Cast.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Catch.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Catch.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/CombineLatest.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/CombineLatest.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Concat.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Concat.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ContinueWith.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ContinueWith.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Create.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Create.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/DefaultIfEmpty.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/DefaultIfEmpty.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Defer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Defer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Delay.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Delay.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/DelaySubscription.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/DelaySubscription.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Dematerialize.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Dematerialize.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Distinct.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Distinct.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/DistinctUntilChanged.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/DistinctUntilChanged.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Do.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Do.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Empty.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Empty.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Finally.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Finally.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/First.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/First.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ForEachAsync.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ForEachAsync.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/FromEvent.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/FromEvent.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/GroupBy.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/GroupBy.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/IgnoreElements.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/IgnoreElements.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Last.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Last.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Materialize.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Materialize.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Merge.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Merge.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Never.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Never.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ObserveOn.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ObserveOn.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/OfType.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/OfType.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/OperatorObservableBase.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/OperatorObservableBase.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/OperatorObserverBase.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/OperatorObserverBase.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/PairWise.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/PairWise.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Range.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Range.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/RefCount.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/RefCount.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Repeat.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Repeat.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/RepeatSafe.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/RepeatSafe.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Return.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Return.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Sample.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Sample.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Scan.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Scan.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Select.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Select.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SelectMany.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SelectMany.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SelectWhere.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SelectWhere.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Single.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Single.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Skip.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Skip.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SkipUntil.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SkipUntil.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SkipWhile.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SkipWhile.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Start.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Start.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/StartWith.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/StartWith.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SubscribeOn.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SubscribeOn.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Switch.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Switch.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Synchronize.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Synchronize.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SynchronizedObserver.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/SynchronizedObserver.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Take.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Take.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TakeLast.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TakeLast.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TakeUntil.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TakeUntil.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TakeWhile.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TakeWhile.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Throttle.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Throttle.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ThrottleFirst.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ThrottleFirst.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Throw.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Throw.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TimeInterval.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/TimeInterval.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Timeout.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Timeout.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Timer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Timer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Timestamp.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Timestamp.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ToArray.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ToArray.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ToList.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ToList.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ToObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ToObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Wait.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Wait.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/WhenAll.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/WhenAll.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Where.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Where.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/WhereSelect.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/WhereSelect.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/WithLatestFrom.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/WithLatestFrom.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Zip.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/Zip.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ZipLatest.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Operators/ZipLatest.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Pair.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Pair.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/CurrentThreadScheduler.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/CurrentThreadScheduler.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/IScheduler.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/IScheduler.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/ImmediateScheduler.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/ImmediateScheduler.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/Scheduler.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/Scheduler.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/ThreadPoolScheduler.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Schedulers/ThreadPoolScheduler.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/AsyncSubject.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/AsyncSubject.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/BehaviorSubject.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/BehaviorSubject.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/ConnectableObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/ConnectableObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/ISubject.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/ISubject.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/ReplaySubject.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/ReplaySubject.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/Subject.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/Subject.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/SubjectExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Subjects/SubjectExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IObserver.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IObserver.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IOptimizedObservable.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IOptimizedObservable.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IProgress.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/IProgress.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/Tuple.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/Tuple.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/Unit.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/System/Unit.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Tasks.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Tasks/TaskObservableExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Tasks/TaskObservableExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/TimeInterval.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/TimeInterval.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Timestamped.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/Timestamped.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UniRx.asmdef create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UniRx.asmdef.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/AsyncOperationExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/AsyncOperationExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/CancellationToken.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/CancellationToken.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/CoroutineAsyncBridge.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/CoroutineAsyncBridge.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntry.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntry.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntryExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/LogEntryExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/Logger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/Logger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableDebugExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableDebugExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableLogger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/ObservableLogger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/UnityDebugSink.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Diagnostics/UnityDebugSink.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/FrameInterval.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/FrameInterval.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/InspectableReactiveProperty.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/InspectableReactiveProperty.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/InspectorDisplayDrawer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/InspectorDisplayDrawer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/LifetimeDisposableExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/LifetimeDisposableExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadDispatcher.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadDispatcher.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadScheduler.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/MainThreadScheduler.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Observable.Unity.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Observable.Unity.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ObservableWWW.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ObservableWWW.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ObserveExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ObserveExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/BatchFrame.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/BatchFrame.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrame.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrame.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrameSubscription.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/DelayFrameSubscription.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameInterval.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameInterval.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameTimeInterval.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FrameTimeInterval.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FromCoroutine.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/FromCoroutine.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/RepeatUntil.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/RepeatUntil.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SampleFrame.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SampleFrame.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SubscribeOnMainThread.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/SubscribeOnMainThread.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFirstFrame.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFirstFrame.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFrame.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/ThrottleFrame.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/TimeoutFrame.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Operators/TimeoutFrame.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCollection.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCollection.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCommand.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveCommand.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveDictionary.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveDictionary.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveProperty.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ReactiveProperty.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ScenePlaybackDetector.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/ScenePlaybackDetector.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Toolkit.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Toolkit/ObjectPool.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Toolkit/ObjectPool.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableAnimatorTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableAnimatorTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableBeginDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCancelTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCancelTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCanvasGroupChangedTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCanvasGroupChangedTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollision2DTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollision2DTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollisionTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableCollisionTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDeselectTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDeselectTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDestroyTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDestroyTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDropTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableDropTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEnableTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEnableTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEndDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEventTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableEventTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableFixedUpdateTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableFixedUpdateTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableInitializePotentialDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableInitializePotentialDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableJointTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableJointTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableLateUpdateTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableLateUpdateTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMouseTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMouseTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMoveTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableMoveTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableParticleTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableParticleTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerClickTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerDownTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerDownTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerEnterTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerExitTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerUpTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservablePointerUpTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableRectTransformTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableRectTransformTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableScrollTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableScrollTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSelectTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSelectTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableStateMachineTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableStateMachineTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSubmitTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableSubmitTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTransformChangedTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTransformChangedTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTrigger2DTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTrigger2DTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerBase.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerBase.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.Component.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.Component.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableTriggerTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateSelectedTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateSelectedTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableUpdateTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableVisibleTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/Triggers/ObservableVisibleTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/UnityEventExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/UnityEventExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/UnityGraphicExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/UnityGraphicExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/UnityUIComponentExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/UnityUIComponentExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/YieldInstructionCache.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityEngineBridge/YieldInstructionCache.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityWinRTBridge.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityWinRTBridge/Thread.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityWinRTBridge/Thread.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityWinRTBridge/ThreadPoolScheduler_UnityWinRT.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/Plugins/UniRx/Scripts/UnityWinRTBridge/ThreadPoolScheduler_UnityWinRT.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/AsyncUnit.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/AsyncUnit.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CancellationTokenEqualityComparer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CancellationTokenEqualityComparer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CancellationTokenExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CancellationTokenExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CancellationTokenSourceExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CancellationTokenSourceExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/AsyncMethodBuilderAttribute.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/AsyncMethodBuilderAttribute.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/AsyncUniTaskMethodBuilder.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/AsyncUniTaskMethodBuilder.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/AsyncUniTaskVoidMethodBuilder.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/AsyncUniTaskVoidMethodBuilder.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/MoveNextRunner.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/CompilerServices/MoveNextRunner.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/DiagnosticsExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/DiagnosticsExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/SplitterGUILayout.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/SplitterGUILayout.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/UniRx.Async.Editor.asmdef create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/UniRx.Async.Editor.asmdef.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/UniTaskTrackerTreeView.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/UniTaskTrackerTreeView.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/UniTaskTrackerWindow.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Editor/UniTaskTrackerWindow.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/EnumerableAsyncExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/EnumerableAsyncExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/EnumeratorAsyncExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/EnumeratorAsyncExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/ExceptionExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/ExceptionExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/IAwaiter.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/IAwaiter.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ArrayPool.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ArrayPool.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ArrayPoolUtil.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ArrayPoolUtil.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ArrayUtil.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ArrayUtil.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/CancellationTokenHelper.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/CancellationTokenHelper.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ContinuationQueue.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ContinuationQueue.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/Error.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/Error.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/Hack.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/Hack.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/LazyPromise.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/LazyPromise.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/MinimumQueue.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/MinimumQueue.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/PlayerLoopRunner.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/PlayerLoopRunner.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/PromiseHelper.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/PromiseHelper.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ReusablePromise.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/ReusablePromise.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/RuntimeHelpersAbstraction.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/RuntimeHelpersAbstraction.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/TaskTracker.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/TaskTracker.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/UnityEqualityComparer.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/UnityEqualityComparer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/WeakDictionary.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Internal/WeakDictionary.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/PlayerLoopHelper.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/PlayerLoopHelper.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Progress.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Progress.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncAnimatorTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncAnimatorTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncAwakeTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncAwakeTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncBeginDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncBeginDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCancelTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCancelTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCanvasGroupChangedTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCanvasGroupChangedTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCollision2DTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCollision2DTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCollisionTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncCollisionTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDeselectTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDeselectTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDestroyTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDestroyTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDropTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncDropTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncEnableDisableTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncEnableDisableTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncEndDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncEndDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncEventTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncEventTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncFixedUpdateTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncFixedUpdateTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncInitializePotentialDragTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncInitializePotentialDragTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncJointTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncJointTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncLateUpdateTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncLateUpdateTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncMouseTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncMouseTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncMoveTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncMoveTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncParticleTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncParticleTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerClickTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerClickTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerDownTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerDownTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerEnterTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerEnterTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerExitTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerExitTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerUpTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncPointerUpTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncRectTransformTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncRectTransformTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncScrollTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncScrollTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncSelectTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncSelectTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncStartTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncStartTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncSubmitTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncSubmitTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTransformChangedTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTransformChangedTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTrigger2DTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTrigger2DTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTriggerBase.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTriggerBase.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTriggerExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTriggerExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTriggerTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncTriggerTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncUpdateSelectedTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncUpdateSelectedTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncUpdateTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncUpdateTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncVisibleTrigger.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/Triggers/AsyncVisibleTrigger.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniRx.Async.asmdef create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniRx.Async.asmdef.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Bridge.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Bridge.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Delay.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Delay.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Factory.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Factory.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Run.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Run.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Threading.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.Threading.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WaitUntil.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WaitUntil.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAll.Generated.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAll.Generated.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAll.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAll.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAny.Generated.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAny.Generated.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAny.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.WhenAny.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTask.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskCompletionSource.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskCompletionSource.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskExtensions.Shorthand.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskExtensions.Shorthand.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskObservableExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskObservableExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskScheduler.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskScheduler.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskVoid.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UniTaskVoid.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UnityAsyncExtensions.Jobs.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UnityAsyncExtensions.Jobs.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UnityAsyncExtensions.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UnityAsyncExtensions.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UnityAsyncExtensions.uGUI.cs create mode 100644 Assets/TinaX/Vendor/Core/UniRx/UniRx.Async/UnityAsyncExtensions.uGUI.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/CONTRIBUTING.md create mode 100644 Assets/TinaX/Vendor/Core/xNode/CONTRIBUTING.md.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/LICENSE.md create mode 100644 Assets/TinaX/Vendor/Core/xNode/LICENSE.md.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/README.md create mode 100644 Assets/TinaX/Vendor/Core/xNode/README.md.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Attributes.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Attributes/NodeEnum.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Attributes/NodeEnum.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Drawers.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Drawers/NodeEnumDrawer.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Drawers/NodeEnumDrawer.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditor.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditor.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorAction.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorAction.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorAssetModProcessor.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorAssetModProcessor.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorBase.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorBase.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorGUI.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorGUI.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorGUILayout.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorGUILayout.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorPreferences.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorPreferences.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorReflection.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorReflection.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorResources.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorResources.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorUtilities.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorUtilities.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorWindow.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeEditorWindow.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeGraphEditor.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/NodeGraphEditor.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/ScriptTemplates.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeGraphTemplate.cs.txt create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeGraphTemplate.cs.txt.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeTemplate.cs.txt create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/ScriptTemplates/xNode_NodeTemplate.cs.txt.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_dot.png create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_dot.png.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_dot_outer.png create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_dot_outer.png.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_node.png create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_node.png.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_node_highlight.png create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_node_highlight.png.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_node_workfile.psd create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Editor/Resources/xnode_node_workfile.psd.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Node.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/Node.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/NodeDataCache.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/NodeDataCache.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/NodeGraph.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/NodeGraph.cs.meta create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/NodePort.cs create mode 100644 Assets/TinaX/Vendor/Core/xNode/Scripts/NodePort.cs.meta create mode 100644 EditorRes/Logo.psd create mode 100644 "EditorRes/\351\205\215\350\241\250/I18N\350\241\250.xlsx" create mode 100644 "EditorRes/\351\205\215\350\241\250/UISafeArea.xlsx" create mode 100644 "EditorRes/\351\205\215\350\241\250/UISafeArea.xlsx.json" create mode 100644 LICENSE create mode 100644 Packages/manifest.json create mode 100644 ProjectSettings/AudioManager.asset create mode 100644 ProjectSettings/ClusterInputManager.asset create mode 100644 ProjectSettings/DynamicsManager.asset create mode 100644 ProjectSettings/EditorBuildSettings.asset create mode 100644 ProjectSettings/EditorSettings.asset create mode 100644 ProjectSettings/GraphicsSettings.asset create mode 100644 ProjectSettings/InputManager.asset create mode 100644 ProjectSettings/NavMeshAreas.asset create mode 100644 ProjectSettings/NetworkManager.asset create mode 100644 ProjectSettings/Physics2DSettings.asset create mode 100644 ProjectSettings/PresetManager.asset create mode 100644 ProjectSettings/ProjectSettings.asset create mode 100644 ProjectSettings/ProjectVersion.txt create mode 100644 ProjectSettings/QualitySettings.asset create mode 100644 ProjectSettings/TagManager.asset create mode 100644 ProjectSettings/TimeManager.asset create mode 100644 ProjectSettings/UnityConnectSettings.asset create mode 100644 ProjectSettings/VFXManager.asset create mode 100644 ProjectSettings/XRSettings.asset diff --git a/.github/ISSUE_TEMPLATE/----.md b/.github/ISSUE_TEMPLATE/----.md new file mode 100644 index 0000000..eee6bae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/----.md @@ -0,0 +1,10 @@ +--- +name: 功能建议 +about: 好像需要一个这样的功能或改进 +title: '' +labels: enhancement +assignees: '' + +--- + + diff --git a/.github/ISSUE_TEMPLATE/--bug.md b/.github/ISSUE_TEMPLATE/--bug.md new file mode 100644 index 0000000..ff98c94 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/--bug.md @@ -0,0 +1,18 @@ +--- +name: 提交BUG +about: 嘿~ 我发现了一个Bug! (>^ω^<) +title: "[BUG]" +labels: bug +assignees: '' + +--- + +### Bug描述 + + + +### 复现方式 + + + +### 其他 diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000..dceaed0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,18 @@ +--- +name: Bug Report +about: Create a report to help us improve +title: "[BUG]" +labels: bug +assignees: '' + +--- + +### Bug描述 + + + +### 复现方式 + + + +### 其他 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..387eb2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,53 @@ +[Ll]ibrary/ +[Tt]emp/ +[Oo]bj/ +[Bb]uild/ +[Bb]uilds/ +Logs/ +Assets/AssetStoreTools* + + + +# Visual Studio cache directory +.vs/ +.vscode/ +vscspace.code-workspace + + + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.opendb + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta + +# Unity3D Generated File On Crash Reports +sysinfo.txt + +# Builds +*.apk + +#TinaX 开发 +Assets/TinaX/Editor/Vendor/Removable/ +Assets/TinaX/Editor/Vendor/Removable.meta +Assets/TinaX/Vendor/Removable/ +Assets/TinaX/Vendor/Removable.meta +TinaX_VFS/ +Assets/StreamingAssets/vfs.meta +Assets/StreamingAssets/vfs +LuaDebug.txt +LuaDebugjit.txt \ No newline at end of file diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100644 index 0000000..bec0d16 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c5a6fe86550709479a1c5e79e7fc21f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX.meta b/Assets/Resources/TinaX.meta new file mode 100644 index 0000000..eebb35c --- /dev/null +++ b/Assets/Resources/TinaX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7dc1804a2b63744e90dd8d8dc378826 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX/Config.meta b/Assets/Resources/TinaX/Config.meta new file mode 100644 index 0000000..251e3dd --- /dev/null +++ b/Assets/Resources/TinaX/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8cbe66eb91256e74abaf22b1ad92ba46 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX/Config/i18n.asset b/Assets/Resources/TinaX/Config/i18n.asset new file mode 100644 index 0000000..650ee5b --- /dev/null +++ b/Assets/Resources/TinaX/Config/i18n.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: 20ef2b13925314c4188e7cb270b3be2e, type: 3} + m_Name: i18n + m_EditorClassIdentifier: + EnbaleI18N: 0 + defaultRegion: + Regions: [] + autoMatch: 0 diff --git a/Assets/Resources/TinaX/Config/i18n.asset.meta b/Assets/Resources/TinaX/Config/i18n.asset.meta new file mode 100644 index 0000000..c77dd86 --- /dev/null +++ b/Assets/Resources/TinaX/Config/i18n.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7041a19531b78374ab8eb68ae8d2d383 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX/Config/tinax_base_config.asset b/Assets/Resources/TinaX/Config/tinax_base_config.asset new file mode 100644 index 0000000..bd5301a --- /dev/null +++ b/Assets/Resources/TinaX/Config/tinax_base_config.asset @@ -0,0 +1,19 @@ +%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: 7630ff060bf5b504e98fe2f5817c7a7e, type: 3} + m_Name: tinax_base_config + m_EditorClassIdentifier: + CommonDefineStr: [] + DefineWithTarget: + - TargetName: Unknown + DefineStr: [] + IgnoreDefine: [] diff --git a/Assets/Resources/TinaX/Config/tinax_base_config.asset.meta b/Assets/Resources/TinaX/Config/tinax_base_config.asset.meta new file mode 100644 index 0000000..7cc3ceb --- /dev/null +++ b/Assets/Resources/TinaX/Config/tinax_base_config.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9687aa8469fa36d40b83ae1d90702840 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX/Config/tinax_config.asset b/Assets/Resources/TinaX/Config/tinax_config.asset new file mode 100644 index 0000000..545cea0 --- /dev/null +++ b/Assets/Resources/TinaX/Config/tinax_config.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: 51dc333c3f082834dacb4938c0ea8bdd, type: 3} + m_Name: tinax_config + m_EditorClassIdentifier: + TinaX_Enable: 1 + Startup_Scene: + Version_Code: 0 + App_Name: diff --git a/Assets/Resources/TinaX/Config/tinax_config.asset.meta b/Assets/Resources/TinaX/Config/tinax_config.asset.meta new file mode 100644 index 0000000..27559b1 --- /dev/null +++ b/Assets/Resources/TinaX/Config/tinax_config.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b95c5e80d6f1604da2a0eb7db784eb9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX/Config/uikit.asset b/Assets/Resources/TinaX/Config/uikit.asset new file mode 100644 index 0000000..1e86764 --- /dev/null +++ b/Assets/Resources/TinaX/Config/uikit.asset @@ -0,0 +1,29 @@ +%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: eeabb80637acb5c47b6cdeb3e4be2f30, type: 3} + m_Name: uikit + m_EditorClassIdentifier: + Default_UIGroup: {fileID: 0} + Use_AdvancedMode: 0 + Canvas_Scale_Mode: 0 + UISize: {x: 1920, y: 1080} + ScreenMatchMode: 0 + Match: 1 + ScaleFactor: 1 + physicalUnit: 3 + referencePixelsPerUnit: 100 + MaskColor: {r: 0, g: 0, b: 0, a: 0.5} + UI_Img_Path: + UI_Atlas_Path: + Enable_UISafeArea: 0 + UI_SafeArea_Json: + UISafeArea_LoadByVFS: 1 diff --git a/Assets/Resources/TinaX/Config/uikit.asset.meta b/Assets/Resources/TinaX/Config/uikit.asset.meta new file mode 100644 index 0000000..ea68a54 --- /dev/null +++ b/Assets/Resources/TinaX/Config/uikit.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6912c9d3152b2354b9823e156db01784 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX/Config/upgrade.asset b/Assets/Resources/TinaX/Config/upgrade.asset new file mode 100644 index 0000000..dc62cc0 --- /dev/null +++ b/Assets/Resources/TinaX/Config/upgrade.asset @@ -0,0 +1,19 @@ +%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: f6ab277dd8713224b9ae0aeee26c447e, type: 3} + m_Name: upgrade + m_EditorClassIdentifier: + Enable_upgrade: 0 + Upgrade_Mode: 0 + Auto_Upgrade: 0 + Static_Json_Url_Default: + Static_Json_Platform: [] diff --git a/Assets/Resources/TinaX/Config/upgrade.asset.meta b/Assets/Resources/TinaX/Config/upgrade.asset.meta new file mode 100644 index 0000000..a23202f --- /dev/null +++ b/Assets/Resources/TinaX/Config/upgrade.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 406c4bb3c969f1646a99f2f6ed59429a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/TinaX/Config/vfs.asset b/Assets/Resources/TinaX/Config/vfs.asset new file mode 100644 index 0000000..26b84ca --- /dev/null +++ b/Assets/Resources/TinaX/Config/vfs.asset @@ -0,0 +1,24 @@ +%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: 93f4fbe7c156679409a8e323f634c9cc, type: 3} + m_Name: vfs + m_EditorClassIdentifier: + Assets_system_whiteList: [] + Special_Package_Folder: [] + Ignore_Path: [] + Ignore_Ext: [] + Ignore_Path_keyword: [] + EncryFileList: [] + EncryPathList: [] + EnableChineseFileInput: 0 + ChineseHandleType: 0 + EnableTextureToSpriteInUIAssetsFolder: 1 diff --git a/Assets/Resources/TinaX/Config/vfs.asset.meta b/Assets/Resources/TinaX/Config/vfs.asset.meta new file mode 100644 index 0000000..66090cc --- /dev/null +++ b/Assets/Resources/TinaX/Config/vfs.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6c9b26147116e14f9be96128d3a5ef7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX.meta b/Assets/TinaX.meta new file mode 100644 index 0000000..53a9db2 --- /dev/null +++ b/Assets/TinaX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f624795527a7ebb428aa149d42b34299 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core.meta b/Assets/TinaX/Core.meta new file mode 100644 index 0000000..134e4df --- /dev/null +++ b/Assets/TinaX/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff6311067e736fd43920a7e3d1c83411 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly.meta b/Assets/TinaX/Core/Assembly.meta new file mode 100644 index 0000000..2962c41 --- /dev/null +++ b/Assets/TinaX/Core/Assembly.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3a4e0c69b5e45084aa8c42f8da52851c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/Config.meta b/Assets/TinaX/Core/Assembly/Config.meta new file mode 100644 index 0000000..a6ad88e --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cfb97c9dcdd5df34bb7042b3e0c594f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/Config/Config.cs b/Assets/TinaX/Core/Assembly/Config/Config.cs new file mode 100644 index 0000000..b84a904 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Config/Config.cs @@ -0,0 +1,135 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace TinaX +{ + /// + /// 配置读取类 + /// + public class Config + { + + /// + /// 获取TinaX配置文件 + /// + /// 配置类型 + /// 文件名 + public static T GetTinaXConfig(string file) where T:ScriptableObject + { +#if UNITY_EDITOR + if (Application.isPlaying) + { + //运行模式 + return Config_Cache.I.GetTinaXConfig(file); + } + else + { + //直接读取 + + return Resources.Load(Setup.Framework_Config_Path + "/" + System.IO.Path.GetFileNameWithoutExtension(file)); + } + +#else + return Config_Cache.I.GetTinaXConfig(file); +#endif + } + +#if UNITY_EDITOR + + /// + /// 确保父路径 + /// + private static void CheckDir() + { + var path_unity = "Assets/Resources/" + Setup.Framework_Config_Path + "/"; + path_unity = path_unity.Replace("/", "\\"); + var system_path = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), path_unity); + if (!System.IO.Directory.Exists(system_path)) + { + System.IO.Directory.CreateDirectory(system_path); + } + } + + + /// + /// [Editor Only]如果不存在则创建配置 + /// + /// 配置类型 + /// 文件名 + public static T CreateIfNotExist(string file_name) where T : ScriptableObject + { + //AssetDatabase.SaveAssets(); + AssetDatabase.ReleaseCachedFileHandles(); + AssetDatabase.Refresh(); + + var file = Resources.Load(Setup.Framework_Config_Path + "/" + System.IO.Path.GetFileNameWithoutExtension(file_name)); + if (file == null) + { + var conf = ScriptableObject.CreateInstance(); + //试着创建一下父路径 + CheckDir(); + + AssetDatabase.CreateAsset(conf, "Assets/Resources/" + Setup.Framework_Config_Path + "/" + file_name); + return conf; + } + else + { + return file; + } + } + +#endif + + + } + + /// + /// 在运行时,将读取的配置缓存在内存中 + /// + public class Config_Cache + { + #region Instance + private static Config_Cache _instance; + public static Config_Cache I + { + get + { + if (_instance == null) + { + _instance = new Config_Cache(); + } + return _instance; + } + } + + #endregion + + private Dictionary m_config_cache = new Dictionary(); + + + public T GetTinaXConfig(string file_name) where T: ScriptableObject + { + //检查是否存在 + if (m_config_cache.ContainsKey(file_name)) + { + return (T)m_config_cache[file_name]; + } + else + { + //加载配置文件 + //Debug.Log("加载配置文件:" + Setup.Framework_Config_Path + "/" + System.IO.Path.GetFileNameWithoutExtension(file_name)); + var config = Resources.Load(Setup.Framework_Config_Path + "/" + System.IO.Path.GetFileNameWithoutExtension(file_name)); + m_config_cache.Add(file_name, config); + return config; + } + } + + + } + +} + diff --git a/Assets/TinaX/Core/Assembly/Config/Config.cs.meta b/Assets/TinaX/Core/Assembly/Config/Config.cs.meta new file mode 100644 index 0000000..3d7cbe3 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Config/Config.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7064318cf3a4d2b45afba161bac9998e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/Encry.meta b/Assets/TinaX/Core/Assembly/Encry.meta new file mode 100644 index 0000000..a608d50 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Encry.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bae25d5082d15c04391ab0bda1dcc27b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/Encry/Encry.cs b/Assets/TinaX/Core/Assembly/Encry/Encry.cs new file mode 100644 index 0000000..f1d1f5a --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Encry/Encry.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.Security; +using System.Security.Cryptography; +using System; +using System.Text; + + +namespace TinaX +{ + /// + /// 加解密类 + /// + public static class Encry + { + + /// + /// 取MD5 + /// + /// 原文件 + /// MD5文件 + public static string GetMD5(string content) + { + var md5 = new MD5CryptoServiceProvider(); + var data = System.Text.Encoding.Default.GetBytes(content); + var t_data = md5.ComputeHash(data); + return System.Text.Encoding.Default.GetString(t_data); + } + } +} + diff --git a/Assets/TinaX/Core/Assembly/Encry/Encry.cs.meta b/Assets/TinaX/Core/Assembly/Encry/Encry.cs.meta new file mode 100644 index 0000000..d099913 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Encry/Encry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8aae6a2565db66c478f7543cb2d7340e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/IO.meta b/Assets/TinaX/Core/Assembly/IO.meta new file mode 100644 index 0000000..0021524 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/IO.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83b2c7653c730054aad7439dce380026 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/IO/XFile.cs b/Assets/TinaX/Core/Assembly/IO/XFile.cs new file mode 100644 index 0000000..a9c685f --- /dev/null +++ b/Assets/TinaX/Core/Assembly/IO/XFile.cs @@ -0,0 +1,44 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using ICSharpCode.SharpZipLib.Zip; + +namespace TinaX.IO +{ + public static class XFile + { + public static string GetMD5(string fileName) + { + try + { + FileStream file = new FileStream(fileName, System.IO.FileMode.Open); + MD5 md5 = new MD5CryptoServiceProvider(); + byte[] retVal = md5.ComputeHash(file); + file.Close(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < retVal.Length; i++) + { + sb.Append(retVal[i].ToString("x2")); + } + return sb.ToString(); + } + catch (Exception ex) + { + throw new Exception("GetMD5() fail,error:" + ex.Message); + } + } + + /// + /// 解压缩zip + /// + /// + public static void Unzip(string filePath,string targetDir) + { + var fz = new FastZip(); + fz.ExtractZip(filePath, targetDir, FastZip.Overwrite.Always,(filename)=> { return true; },"","",true); + } + + + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Assembly/IO/XFile.cs.meta b/Assets/TinaX/Core/Assembly/IO/XFile.cs.meta new file mode 100644 index 0000000..910f240 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/IO/XFile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b14f2e59c7b805a4690c18a4e1bc50ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/IO/XFolder.cs b/Assets/TinaX/Core/Assembly/IO/XFolder.cs new file mode 100644 index 0000000..ad71757 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/IO/XFolder.cs @@ -0,0 +1,18 @@ +using System; +using System.IO; +using ICSharpCode.SharpZipLib.Zip; + +namespace TinaX.IO +{ + public class XFolder + { + /// + /// 将文件夹压缩ZIP + /// + public static void ZipFolder(string folder,string zipName) + { + var fz = new FastZip(); + fz.CreateZip(zipName, folder, true, ""); + } + } +} diff --git a/Assets/TinaX/Core/Assembly/IO/XFolder.cs.meta b/Assets/TinaX/Core/Assembly/IO/XFolder.cs.meta new file mode 100644 index 0000000..cf1a31b --- /dev/null +++ b/Assets/TinaX/Core/Assembly/IO/XFolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0d582fa50faf8c4daa4aa5e27a71b8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/Platform.meta b/Assets/TinaX/Core/Assembly/Platform.meta new file mode 100644 index 0000000..568052d --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Platform.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 892d354cab00a0d49be0ee98997b26f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/Platform/Platform.cs b/Assets/TinaX/Core/Assembly/Platform/Platform.cs new file mode 100644 index 0000000..d8560ce --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Platform/Platform.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace TinaX +{ + public static class Platform + { + public static string GetPlatformName(UnityEngine.RuntimePlatform platform) + { + switch (platform) + { + case UnityEngine.RuntimePlatform.WindowsPlayer: + return Const.PlatformConst.E_Platform.Windows64.ToString(); + case UnityEngine.RuntimePlatform.LinuxPlayer: + return Const.PlatformConst.E_Platform.Linux64.ToString(); + case UnityEngine.RuntimePlatform.OSXPlayer: + return Const.PlatformConst.E_Platform.OSX.ToString(); + case UnityEngine.RuntimePlatform.Android: + return Const.PlatformConst.E_Platform.Android.ToString(); + case UnityEngine.RuntimePlatform.IPhonePlayer: + return Const.PlatformConst.E_Platform.iOS.ToString(); + case UnityEngine.RuntimePlatform.XboxOne: + return Const.PlatformConst.E_Platform.XBox.ToString(); + case UnityEngine.RuntimePlatform.Switch: + return Const.PlatformConst.E_Platform.NSwitch.ToString(); + case UnityEngine.RuntimePlatform.WebGLPlayer: + return Const.PlatformConst.E_Platform.WebGL.ToString(); + case UnityEngine.RuntimePlatform.WSAPlayerARM: + return Const.PlatformConst.E_Platform.UWP.ToString(); + case UnityEngine.RuntimePlatform.WSAPlayerX64: + return Const.PlatformConst.E_Platform.UWP.ToString(); + case UnityEngine.RuntimePlatform.WSAPlayerX86: + return Const.PlatformConst.E_Platform.UWP.ToString(); + + //EDITORS + case UnityEngine.RuntimePlatform.WindowsEditor: + return Const.PlatformConst.E_Platform.Windows64.ToString(); + case UnityEngine.RuntimePlatform.LinuxEditor: + return Const.PlatformConst.E_Platform.Linux64.ToString(); + case UnityEngine.RuntimePlatform.OSXEditor: + return Const.PlatformConst.E_Platform.OSX.ToString(); + + + default: + return Const.PlatformConst.E_Platform.Windows64.ToString(); + } + } + + /// + /// 获取平台定义 + /// + /// + /// + public static TinaX.Const.PlatformConst.E_Platform GetPlatform(UnityEngine.RuntimePlatform platform) + { + switch (platform) + { + case UnityEngine.RuntimePlatform.WindowsPlayer: + return Const.PlatformConst.E_Platform.Windows64; + case UnityEngine.RuntimePlatform.LinuxPlayer: + return Const.PlatformConst.E_Platform.Linux64; + case UnityEngine.RuntimePlatform.OSXPlayer: + return Const.PlatformConst.E_Platform.OSX; + case UnityEngine.RuntimePlatform.Android: + return Const.PlatformConst.E_Platform.Android; + case UnityEngine.RuntimePlatform.IPhonePlayer: + return Const.PlatformConst.E_Platform.iOS; + case UnityEngine.RuntimePlatform.XboxOne: + return Const.PlatformConst.E_Platform.XBox; + case UnityEngine.RuntimePlatform.Switch: + return Const.PlatformConst.E_Platform.NSwitch; + case UnityEngine.RuntimePlatform.WebGLPlayer: + return Const.PlatformConst.E_Platform.WebGL; + case UnityEngine.RuntimePlatform.WSAPlayerARM: + return Const.PlatformConst.E_Platform.UWP; + case UnityEngine.RuntimePlatform.WSAPlayerX64: + return Const.PlatformConst.E_Platform.UWP; + case UnityEngine.RuntimePlatform.WSAPlayerX86: + return Const.PlatformConst.E_Platform.UWP; + + //EDITORS + case UnityEngine.RuntimePlatform.WindowsEditor: + return Const.PlatformConst.E_Platform.Windows64; + case UnityEngine.RuntimePlatform.LinuxEditor: + return Const.PlatformConst.E_Platform.Linux64; + case UnityEngine.RuntimePlatform.OSXEditor: + return Const.PlatformConst.E_Platform.OSX; + + + default: + return Const.PlatformConst.E_Platform.Windows64; + } + } + + + +#if UNITY_EDITOR + public static BuildTarget GetBuildTarget(TinaX.Const.PlatformConst.E_Platform platform) + { + switch (platform) + { + default: + return BuildTarget.StandaloneWindows64; + case TinaX.Const.PlatformConst.E_Platform.Android: + return BuildTarget.Android; + case TinaX.Const.PlatformConst.E_Platform.iOS: + return BuildTarget.iOS; + case TinaX.Const.PlatformConst.E_Platform.Linux64: + return BuildTarget.StandaloneLinux64; + case TinaX.Const.PlatformConst.E_Platform.NSwitch: + return BuildTarget.Switch; + case TinaX.Const.PlatformConst.E_Platform.OSX: + return BuildTarget.StandaloneOSX; + case TinaX.Const.PlatformConst.E_Platform.WebGL: + return BuildTarget.WebGL; + case TinaX.Const.PlatformConst.E_Platform.Windows64: + return BuildTarget.StandaloneWindows64; + case TinaX.Const.PlatformConst.E_Platform.XBox: + return BuildTarget.XboxOne; + case TinaX.Const.PlatformConst.E_Platform.UWP: + return BuildTarget.WSAPlayer; + + } + } +#endif + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Assembly/Platform/Platform.cs.meta b/Assets/TinaX/Core/Assembly/Platform/Platform.cs.meta new file mode 100644 index 0000000..4ca1694 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/Platform/Platform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a326408d2a972a74db9995f302b04b2d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/TinaXUtil.meta b/Assets/TinaX/Core/Assembly/TinaXUtil.meta new file mode 100644 index 0000000..9eb6773 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/TinaXUtil.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 780adf3909bd64141ba0651814a12a5a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox.meta b/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox.meta new file mode 100644 index 0000000..6dc3493 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0035ef0c950227c418deeb1727597802 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs b/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs new file mode 100644 index 0000000..b97984e --- /dev/null +++ b/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs @@ -0,0 +1,154 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using TinaX.UIKit; +using System; + +namespace TinaX.Common +{ + public class TinaXMsgbox : MonoBehaviour + { + [Header("标题")] + public Text txt_title; + [Header("正文")] + public Text txt_Content; + [Header("按钮们")] + public Button btn_yes; + public Button btn_no; + + public void OnOpenUI(string title, string content, string str_btn_yes, Action btn_yes_callback = null, string str_btn_no = null, Action btn_no_callback = null) + { + txt_title.text = title; + txt_Content.text = content; + btn_yes.gameObject.GetComponentInChildren().text = str_btn_yes; + btn_yes.onClick.RemoveAllListeners(); + btn_yes.onClick.AddListener(()=> { + btn_yes_callback(); + }); + + if (str_btn_no == null) + { + btn_no.gameObject.SetActive(false); + } + else + { + btn_no.gameObject.GetComponentInChildren().text = str_btn_no; + btn_no.onClick.RemoveAllListeners(); + btn_no.onClick.AddListener(() => + { + btn_no_callback(); + }); + } + + } + + } +} + +namespace TinaX.Utils +{ + public static class MsgBox + { + private const string MsgBox_Hor_Name = "TinaX_MsgBox_Hor"; //GameObject识别名 + private const string MsgBox_Ver_Name = "TinaX_MsgBox_Ver"; // + + private const string MsgBox_Hor_Path = "TinaX/Common/MsgBox_hor"; //prefab - resources + private const string MsgBox_Ver_Path = "TinaX/Common/MsgBox_ver"; //prefab - resources + + private static bool mIsMsgBoxShow; //MsgBox是否正常显示 + private static GameObject MsgBox_Go_Hor; + private static GameObject MsgBox_Go_Ver; + + /// + /// 打开MessageBox + /// + /// 标题 + /// 正文 + /// 确认按钮文本 + /// 确认按钮回调 + /// 取消按钮文本 + /// 取消按钮回调 + public static void ShowMsgBox(string title,string content,string btn_yes,Action btn_yes_callback = null, string btn_no = null,Action btn_no_callback = null) + { + if (mIsMsgBoxShow) return; + + Action finish = new Action(() => { + mIsMsgBoxShow = false; + if(MsgBox_Go_Hor != null) + { + GameObject.Destroy(MsgBox_Go_Hor); + } + if (MsgBox_Go_Ver != null) + { + GameObject.Destroy(MsgBox_Go_Ver); + } + }); + + + Action _yes_callback; + if(btn_yes_callback == null) + { + _yes_callback = finish; + } + else + { + _yes_callback = btn_yes_callback; + _yes_callback += finish; + } + + Action _no_callback; + if (btn_no_callback == null) + { + _no_callback = finish; + } + else + { + _no_callback = btn_no_callback; + _no_callback += finish; + } + + //判断当前屏幕长宽,以启用对应的UI + if (Screen.width < Screen.height) + { + //竖屏 + var prefab = Resources.Load(MsgBox_Ver_Path); + MsgBox_Go_Ver = GameObject.Instantiate(prefab) + .Name(MsgBox_Ver_Name); + var ui_script = MsgBox_Go_Ver.GetComponent(); + + + if(btn_no == null) + { + ui_script.OnOpenUI(title, content, btn_yes, _yes_callback); + } + else + { + ui_script.OnOpenUI(title, content, btn_yes, _yes_callback,btn_no,_no_callback); + } + } + else + { + //横屏 + var prefab = Resources.Load(MsgBox_Hor_Path); + MsgBox_Go_Hor = GameObject.Instantiate(prefab) + .Name(MsgBox_Hor_Name); + var ui_script = MsgBox_Go_Hor.GetComponent(); + + + if (btn_no == null) + { + ui_script.OnOpenUI(title, content, btn_yes, _yes_callback); + } + else + { + ui_script.OnOpenUI(title, content, btn_yes, _yes_callback, btn_no, _no_callback); + } + } + + mIsMsgBoxShow = true; + + } + + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs.meta b/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs.meta new file mode 100644 index 0000000..4bae311 --- /dev/null +++ b/Assets/TinaX/Core/Assembly/TinaXUtil/msgbox/TinaXMsgbox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e90f837eb01ab744b9a49afeb466866 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Config.meta b/Assets/TinaX/Core/Config.meta new file mode 100644 index 0000000..8d56f52 --- /dev/null +++ b/Assets/TinaX/Core/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b65835deb804f3f4aababd0ce0202ef1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Config/ConfigPath.cs b/Assets/TinaX/Core/Config/ConfigPath.cs new file mode 100644 index 0000000..fd57400 --- /dev/null +++ b/Assets/TinaX/Core/Config/ConfigPath.cs @@ -0,0 +1,161 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TinaX.VFS; + +namespace TinaX.Conf +{ + public class ConfigPath + { + + /// + /// 一个特殊的基础配置文件 + /// framework内部会用它来记录一些基础信息, + /// 这个framework不会完全暴露给用户进行配置 + /// + public static string base_config = "tinax_base_config.asset"; + + + /// + /// 主配置文件 + /// + public const string main = "tinax_config.asset"; + + /// + /// 资源系统(虚拟文件系统 + /// + public const string vfs = "vfs.asset"; + /// + /// UI系统 + /// + public const string uikit = "uikit.asset"; + /// + /// 国际化系统 + /// + public const string i18n = "i18n.asset"; + + /// + /// Lua Script + /// + public const string lua = "lua_script.asset"; + + //public const string vfs2 = "vfs2.asset"; + + public const string upgrade = "upgrade.asset"; + + + } + +#if UNITY_EDITOR + public class ConfigRegister + { + public static S_ConfigInfo[] ConfigRegisters = new S_ConfigInfo[] + { + new S_ConfigInfo() + { + Title = "主框架配置", + Action_Create = () => + { + + return Config.CreateIfNotExist(ConfigPath.main); + + }, + Action_GetInstance = () => + { + return Config.GetTinaXConfig(ConfigPath.main); + } + }, + new S_ConfigInfo() + { + Title = "资产管理器", + Action_Create = () => + { + return Config.CreateIfNotExist(ConfigPath.vfs); + }, + Action_GetInstance = () => + { + return Config.GetTinaXConfig(ConfigPath.vfs); + } + }, + new S_ConfigInfo() + { + Title = "UIKit 用户界面系统", + Action_Create = () => + { + return Config.CreateIfNotExist(ConfigPath.uikit); + }, + Action_GetInstance = () => + { + return Config.GetTinaXConfig(ConfigPath.uikit); + } + }, + new S_ConfigInfo() + { + Title = "国际化系统", + Action_Create = () => + { + return Config.CreateIfNotExist(ConfigPath.i18n); + }, + Action_GetInstance = () => + { + return Config.GetTinaXConfig(ConfigPath.i18n); + } + }, +#if TinaX_CA_LuaRuntime_Enable + new S_ConfigInfo() + { + Title = "Lua Script", + Action_Create = () => + { + return Config.CreateIfNotExist(ConfigPath.lua); + }, + Action_GetInstance = () => + { + return Config.GetTinaXConfig(ConfigPath.lua); + } + }, +#endif + new S_ConfigInfo() + { + Title = "热更新", + Action_Create = () => + { + return Config.CreateIfNotExist(ConfigPath.upgrade); + }, + Action_GetInstance = () => + { + return Config.GetTinaXConfig(ConfigPath.upgrade); + } + }, + //new S_ConfigInfo() + //{ + // Title = "虚拟文件系统 (preview)", + // Action_Create = () => + // { + // return Config.CreateIfNotExist(ConfigPath.vfs2); + // }, + // Action_GetInstance = () => + // { + // return Config.GetTinaXConfig(ConfigPath.vfs2); + // } + //}, + + }; + + public struct S_ConfigInfo + { + public string Title; + + public string FileName; + + + public System.Func Action_Create; + + public System.Func Action_GetInstance; + + } + } + +#endif + } + diff --git a/Assets/TinaX/Core/Config/ConfigPath.cs.meta b/Assets/TinaX/Core/Config/ConfigPath.cs.meta new file mode 100644 index 0000000..ff95000 --- /dev/null +++ b/Assets/TinaX/Core/Config/ConfigPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 211dc700848e8aa4e8e154f324849426 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/ConfigModel.meta b/Assets/TinaX/Core/ConfigModel.meta new file mode 100644 index 0000000..248b356 --- /dev/null +++ b/Assets/TinaX/Core/ConfigModel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ce8b9fa773cb61459e2e70fd7326f89 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/ConfigModel/MainConfig.cs b/Assets/TinaX/Core/ConfigModel/MainConfig.cs new file mode 100644 index 0000000..fdb9fc9 --- /dev/null +++ b/Assets/TinaX/Core/ConfigModel/MainConfig.cs @@ -0,0 +1,68 @@ +using UnityEngine; +#if UNITY_EDITOR && ODIN_INSPECTOR +using Sirenix.OdinInspector; +#endif + +namespace TinaX +{ + /// + /// 框架基础设置 + /// + public class MainConfig : ScriptableObject + { + /// + /// 框架是否启用 + /// +#if UNITY_EDITOR && ODIN_INSPECTOR + [BoxGroup("TinaX Config")] + [Header("启用TinaX")] +#else + [Header("[TinaX]")] +#endif + [SerializeField] + public bool TinaX_Enable = true; + + /// + /// 框架初始启动Scene + /// +#if UNITY_EDITOR && ODIN_INSPECTOR + [Header("启动场景")] + [BoxGroup("TinaX Config")] + [InfoBox("框架启动后会自动载入此处配置的Scene")] + +#else + [Tooltip("如配置内容不为空,则框架启动后会自动载入此处配置的Scene")] +#endif + public string Startup_Scene; + + + /// + /// 当前母包版本号 + /// +#if UNITY_EDITOR && ODIN_INSPECTOR + [Header("当前母包版本号")] + [BoxGroup("TinaX Config")] +#else + +#endif + public int Version_Code = 0; + + + /// + /// 框架与网络等系统的唯一识别名,非显示名 + /// +#if UNITY_EDITOR && ODIN_INSPECTOR + [Header("应用ID")] + [BoxGroup("TinaX Config")] + [InfoBox("框架与网络等系统的唯一识别名,非显示名")] +#else + [Tooltip("框架与网络等系统的唯一识别名,非显示名")] +#endif + public string App_Name =""; + + + + + } + +} diff --git a/Assets/TinaX/Core/ConfigModel/MainConfig.cs.meta b/Assets/TinaX/Core/ConfigModel/MainConfig.cs.meta new file mode 100644 index 0000000..e6e19dc --- /dev/null +++ b/Assets/TinaX/Core/ConfigModel/MainConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51dc333c3f082834dacb4938c0ea8bdd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b2385ab0902e6dc4c9b179f964c82fff, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/ConfigModel/XBaseConfig.cs b/Assets/TinaX/Core/ConfigModel/XBaseConfig.cs new file mode 100644 index 0000000..02b21b0 --- /dev/null +++ b/Assets/TinaX/Core/ConfigModel/XBaseConfig.cs @@ -0,0 +1,42 @@ +using UnityEngine; +using System; +using System.Collections.Generic; + +namespace TinaX.Core +{ + + public class XBaseConfig : ScriptableObject + { + #region 宏定义指令设置 + + //共用宏定义串(所有平台都会有的定义 + public List CommonDefineStr; + + + public List DefineWithTarget; + + + #endregion + + + /// + /// 结构体:宏定义 与 编译目标平台组的对应关系 + /// + [Serializable] + public struct S_DefineWithBuildTargetGroup + { + /// + /// 目标平台组的名字 + /// + public string TargetName; + + public List DefineStr; + + /// + /// 排除,这里会忽略全局设置 + /// + public List IgnoreDefine; + } + + } +} diff --git a/Assets/TinaX/Core/ConfigModel/XBaseConfig.cs.meta b/Assets/TinaX/Core/ConfigModel/XBaseConfig.cs.meta new file mode 100644 index 0000000..10dcb98 --- /dev/null +++ b/Assets/TinaX/Core/ConfigModel/XBaseConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7630ff060bf5b504e98fe2f5817c7a7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b2385ab0902e6dc4c9b179f964c82fff, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Const.meta b/Assets/TinaX/Core/Const.meta new file mode 100644 index 0000000..32da41a --- /dev/null +++ b/Assets/TinaX/Core/Const.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17882522b105b8840ab650e39c0a34ae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Const/AssetSystemConst.cs b/Assets/TinaX/Core/Const/AssetSystemConst.cs new file mode 100644 index 0000000..7210870 --- /dev/null +++ b/Assets/TinaX/Core/Const/AssetSystemConst.cs @@ -0,0 +1,18 @@ +namespace TinaX.Const +{ + /// + /// 资源系统定义 + /// + public class AssetSystemConst + { + /// + /// 菜单中“即使在编辑器下也从资源包加载资源”的开关 + /// + public const string menu_editor_load_from_asset_pack_name = "TinaX/编辑器/资源系统/从资源包加载"; + + /// + /// 记录当前版本的JSON文件数据 + /// + public const string asset_version_json_name = "local_version.json"; + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Const/AssetSystemConst.cs.meta b/Assets/TinaX/Core/Const/AssetSystemConst.cs.meta new file mode 100644 index 0000000..0f490e0 --- /dev/null +++ b/Assets/TinaX/Core/Const/AssetSystemConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a4f1c72b1149f1499a57fa162b4e608 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Const/EventDefine.cs b/Assets/TinaX/Core/Const/EventDefine.cs new file mode 100644 index 0000000..8a2d487 --- /dev/null +++ b/Assets/TinaX/Core/Const/EventDefine.cs @@ -0,0 +1,13 @@ +namespace TinaX +{ + /// + /// TinaX事件定义 + /// + public class EventDefine + { + /// + /// 场景切换,传递两个参数,当前场景和下一个场景 + /// + public const string X_OnSceneChanged = "TinaX_OnActiveSceneChanged"; + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Const/EventDefine.cs.meta b/Assets/TinaX/Core/Const/EventDefine.cs.meta new file mode 100644 index 0000000..dfdc667 --- /dev/null +++ b/Assets/TinaX/Core/Const/EventDefine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3979ba5f8a3db7c428d1a27346f4c70b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Const/PlatformConst.cs b/Assets/TinaX/Core/Const/PlatformConst.cs new file mode 100644 index 0000000..e083ca0 --- /dev/null +++ b/Assets/TinaX/Core/Const/PlatformConst.cs @@ -0,0 +1,91 @@ +namespace TinaX.Const +{ + /// + /// TinaX平台定义 + /// + public static class PlatformConst + { + public enum E_Platform + { + /// + /// Microsoft Windows x64 + /// + Windows64, + /// + /// GNU Linux + /// + Linux64, + /// + /// Apple OSX + /// + OSX, + /// + /// Google Android + /// + Android, + /// + /// Apple iOS + /// + iOS, + /// + /// Microsoft XBox + /// + XBox, + /// + /// Nintendo Switch + /// + NSwitch, + /// + /// WebGL + /// + WebGL, + /// + /// Microsoft UWP + /// + UWP + } + + public static string GetPlatformName(UnityEngine.RuntimePlatform platform) + { + switch (platform) + { + case UnityEngine.RuntimePlatform.WindowsPlayer: + return E_Platform.Windows64.ToString(); + case UnityEngine.RuntimePlatform.LinuxPlayer: + return E_Platform.Linux64.ToString(); + case UnityEngine.RuntimePlatform.OSXPlayer: + return E_Platform.OSX.ToString(); + case UnityEngine.RuntimePlatform.Android: + return E_Platform.Android.ToString(); + case UnityEngine.RuntimePlatform.IPhonePlayer: + return E_Platform.iOS.ToString(); + case UnityEngine.RuntimePlatform.XboxOne: + return E_Platform.XBox.ToString(); + case UnityEngine.RuntimePlatform.Switch: + return E_Platform.NSwitch.ToString(); + case UnityEngine.RuntimePlatform.WebGLPlayer: + return E_Platform.WebGL.ToString(); + case UnityEngine.RuntimePlatform.WSAPlayerARM: + return E_Platform.UWP.ToString(); + case UnityEngine.RuntimePlatform.WSAPlayerX64: + return E_Platform.UWP.ToString(); + case UnityEngine.RuntimePlatform.WSAPlayerX86: + return E_Platform.UWP.ToString(); + + //EDITORS + case UnityEngine.RuntimePlatform.WindowsEditor: + return E_Platform.Windows64.ToString(); + case UnityEngine.RuntimePlatform.LinuxEditor: + return E_Platform.Linux64.ToString(); + case UnityEngine.RuntimePlatform.OSXEditor: + return E_Platform.OSX.ToString(); + + + default: + return E_Platform.Windows64.ToString(); + } + } + } + + +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Const/PlatformConst.cs.meta b/Assets/TinaX/Core/Const/PlatformConst.cs.meta new file mode 100644 index 0000000..d4994ab --- /dev/null +++ b/Assets/TinaX/Core/Const/PlatformConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3db1e09e50e6a8b4b91fe847dc84a003 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Const/SharpDefineConst.cs b/Assets/TinaX/Core/Const/SharpDefineConst.cs new file mode 100644 index 0000000..0c34a70 --- /dev/null +++ b/Assets/TinaX/Core/Const/SharpDefineConst.cs @@ -0,0 +1,16 @@ +#if UNITY_EDITOR + + +namespace TinaX.Const +{ + public static class SharpDefineConst + { + public static readonly string TinaX_LuaRuntime = "TinaX_CA_LuaRuntime_Enable"; + public static readonly string TinaX_VFS = "TinaX_CA_VFS_Enable"; + } +} + + + + +#endif \ No newline at end of file diff --git a/Assets/TinaX/Core/Const/SharpDefineConst.cs.meta b/Assets/TinaX/Core/Const/SharpDefineConst.cs.meta new file mode 100644 index 0000000..b298158 --- /dev/null +++ b/Assets/TinaX/Core/Const/SharpDefineConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6377a97ab6476494c92e06380848ee6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Core.meta b/Assets/TinaX/Core/Core.meta new file mode 100644 index 0000000..dcabc5a --- /dev/null +++ b/Assets/TinaX/Core/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7085c849cc1178c4cb2a1bd0c7129943 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Core/XApp.cs b/Assets/TinaX/Core/Core/XApp.cs new file mode 100644 index 0000000..ef5438a --- /dev/null +++ b/Assets/TinaX/Core/Core/XApp.cs @@ -0,0 +1,75 @@ +using System; +using UnityEngine; + +namespace TinaX +{ + public static class XApp + { + + #region 公开属性 + /// + /// 框架版本名 + /// + public static string VersionName + { + get + { + return FrameworkInfo.FrameworkVersionName; + } + } + + /// + /// 框架版本号 + /// + public static int VersionCode + { + get + { + return FrameworkInfo.FrameworkVersionCode; + } + } + + /// + /// App版本号 + /// + public static int AppVersionCode + { + get + { + var mainconf = Config.GetTinaXConfig(Conf.ConfigPath.main); + if (mainconf == null) + { + return 0; + } + else + { + return mainconf.Version_Code; + } + } + } + + /// + /// 可读写应用存储路径(沙箱路径) + /// + public static string LocalStorage + { + get + { + return UnityEngine.Application.persistentDataPath + "/" + Setup.Framework_LocalStorage_App; + } + } + + /// + /// 屏幕方向 + /// + public static ScreenOrientation ScreenOrientation + { + get + { + return Screen.orientation; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Core/XApp.cs.meta b/Assets/TinaX/Core/Core/XApp.cs.meta new file mode 100644 index 0000000..da46337 --- /dev/null +++ b/Assets/TinaX/Core/Core/XApp.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee75c77424a2033488e1e56dcc648b22 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Core/XBootstrap.cs b/Assets/TinaX/Core/Core/XBootstrap.cs new file mode 100644 index 0000000..23899cc --- /dev/null +++ b/Assets/TinaX/Core/Core/XBootstrap.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using CatLib; + +namespace TinaX +{ + /// + /// TinaX 启动引导 + /// + public class XBootstrap : IBootstrap + { + [Priority(100)] + public void Bootstrap() + { + foreach(var item in ServiceRegister.Framework_Service_Reg) + { + if (!App.IsRegisted(item)) + { + App.Register(item); + } + } + } + } + +} + diff --git a/Assets/TinaX/Core/Core/XBootstrap.cs.meta b/Assets/TinaX/Core/Core/XBootstrap.cs.meta new file mode 100644 index 0000000..6a94b9a --- /dev/null +++ b/Assets/TinaX/Core/Core/XBootstrap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b4d3ad35fabc1742bb48a3ec7c65f1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Core/XCore.cs b/Assets/TinaX/Core/Core/XCore.cs new file mode 100644 index 0000000..3442e15 --- /dev/null +++ b/Assets/TinaX/Core/Core/XCore.cs @@ -0,0 +1,258 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using CatLib; +using TinaX.Conf; +using TinaX.VFS; +#if UNITY_EDITOR +using UnityEditor; + +#endif + +namespace TinaX +{ + public class XCore + { + #region Instance + + private static XCore _instance; + public static XCore I + { + get + { + if (_instance == null) + { + _instance = new XCore(); + } + return _instance; + } + } + public static XCore Instance + { + get { return I; } + } + + #endregion + + #region Info + public string version_name + { + get + { + return FrameworkInfo.FrameworkVersionName; + } + } + + public int version_code + { + get + { + return FrameworkInfo.FrameworkVersionCode; + } + } + + /// + /// 框架的沙箱存储路径 + /// + public string LocalStorage_TinaX + { + get + { + return UnityEngine.Application.persistentDataPath + "/" + Setup.Framework_LocalStorage_TinaX; + } + } + + /// + /// App的沙箱存储路径(提供给框架使用开发者) + /// + public string LocalStorage_App + { + get + { + return UnityEngine.Application.persistentDataPath + "/" + Setup.Framework_LocalStorage_App; + } + } + + /// + /// 框架的基础GameObject + /// + public GameObject BaseGameObject + { + get + { + return mBaseGameObject; + } + } + + + + #endregion + + #region Runtime + private bool m_inited = false; + private CatLib.Application m_catlib_app; + private MainConfig mMainConfig; + private GameObject mBaseGameObject; + #endregion + + #region Action + + /// + /// 框架软重启时触发的action,如果业务逻辑有需要的,在这时候顺带着处理下吧 + /// + public static Action OnFrameworkRestart; + + #endregion + + public XCore Init(MainConfig mainConfig) + { + if (m_inited) { return this; } + m_inited = true; + + XLog.Print("[TinaX Framework] TinaX6 - v." + version_name + " | Nekonya Studio | Corala.Space Project | Powerd by yomunsam - www.yomunchan.moe"); + + mMainConfig = mainConfig; + + //生成一个全局的GameObject + mBaseGameObject = GameObjectHelper.FindOrCreateGo(Setup.Framework_Base_GameObject) + .DontDestroy() + .SetPosition(new Vector3(-1000, -1000, -1000)); + + //初始化配置与变量 + + + //启动引导系统 + m_catlib_app = new CatLib.Application(); + m_catlib_app.OnFindType((t) => Type.GetType(t)); + m_catlib_app.Bootstrap(new XBootstrap()); + m_catlib_app.Init(); + + //管理器等初始化工作 + InitMgrs(); + + //检查和处理自动更新 + HandleAutoUpgrade(() => + { + //因为更新操作是异步的,所以接下来要执行的东西都在这个回调里 + + StartupApp(); + }); + + + + + + return this; + } + + /// + /// 软重启App + /// + /// + public XCore RestartApp() + { + Debug.Log("[TinaX] Framework开始软重启"); + + _instance = null; + m_inited = false; + + #region 处理其他的资源释放之类的 + + + #endregion + + App.Terminate(); //停用CatLib + + + XStart.RestartFramework(); + + if (OnFrameworkRestart != null) + { + OnFrameworkRestart(); + } + return this; + } + + + + private void InitMgrs() + { + XI18N.Instance.Start(); +#if TinaX_CA_LuaRuntime_Enable + LuaScript.I.Start(); +#endif + + } + + private void StartupApp() + { + +#if TinaX_CA_LuaRuntime_Enable + var luaConfig = Config.GetTinaXConfig(Conf.ConfigPath.lua); + if (luaConfig != null) + { + if (!luaConfig.LuaScriptStartup.IsNullOrEmpty() && luaConfig.EnableLua) + { + LuaScript.I.RunFile(luaConfig.LuaScriptStartup); + } + } +#endif + + if (mMainConfig.Startup_Scene != null && mMainConfig.Startup_Scene != "") + { + if (SceneMgr.Instance.GetActiveSceneName() != mMainConfig.Startup_Scene) + { + SceneMgr.Instance.OpenScene(mMainConfig.Startup_Scene); + } + } + + + } + + /// + /// 处理自动更新 + /// + /// + private void HandleAutoUpgrade(Action OnFinish) + { + + var mUpgradeConfig = TinaX.Config.GetTinaXConfig(TinaX.Conf.ConfigPath.upgrade); + if (mUpgradeConfig == null) + { + OnFinish(); + return; + } + + if (!mUpgradeConfig.Auto_Upgrade) + { + //不需要框架层处理自动更新 + OnFinish(); + return; + } + + +#if UNITY_EDITOR + //编辑器模式下,检查下要不要检查更新:如果使用AssetBundle包模拟加载,则检查更新,否则检查个锤子 + //编辑器模式下,需要判断,是从哪儿加载资源 + if (!Menu.GetChecked(Const.AssetSystemConst.menu_editor_load_from_asset_pack_name)) + { + //直接使用编辑器加载策略 + //这种情况下,不用检查更新 + OnFinish(); + XLog.Print("Framework 热更新:在"+XLog.GetColorString_Blue("编辑器模式") +"下且未采用资源包方式加载资源,故忽略热更新检查。"); + return; + } + +#endif + + TinaX.Upgrade.AutoUpgradeUI_Mgr.Start((res)=> { + + + OnFinish(); + }); + + } + + } +} diff --git a/Assets/TinaX/Core/Core/XCore.cs.meta b/Assets/TinaX/Core/Core/XCore.cs.meta new file mode 100644 index 0000000..d9cd290 --- /dev/null +++ b/Assets/TinaX/Core/Core/XCore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3bbfcca5f688b3c4b88de19e15f1124d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Core/XStart.cs b/Assets/TinaX/Core/Core/XStart.cs new file mode 100644 index 0000000..fc610f0 --- /dev/null +++ b/Assets/TinaX/Core/Core/XStart.cs @@ -0,0 +1,46 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TinaX.Conf; + +namespace TinaX +{ + public class XStart + { + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + public static void OnGameStart() + { + var main_conf = Config.GetTinaXConfig(ConfigPath.main); + if (main_conf == null) + { + Debug.LogWarning("[TinaX] Framework main config file not fount."); + return; + } + if (!main_conf.TinaX_Enable) { return; } + + //启动XCore + XCore.I.Init(main_conf); + } + + public static void RestartFramework() + { + var main_conf = Config.GetTinaXConfig(ConfigPath.main); + if (main_conf == null) + { + Debug.LogWarning("[TinaX] Framework main config file not fount."); + return; + } + if (!main_conf.TinaX_Enable) { return; } + + //启动XCore + XCore.I.Init(main_conf); + } + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] + private static void OnSceneStart() + { + + } + } +} + diff --git a/Assets/TinaX/Core/Core/XStart.cs.meta b/Assets/TinaX/Core/Core/XStart.cs.meta new file mode 100644 index 0000000..1a18c6a --- /dev/null +++ b/Assets/TinaX/Core/Core/XStart.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8cda1c325921f284796e5bc7fbbc73c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/EditorExt.meta b/Assets/TinaX/Core/EditorExt.meta new file mode 100644 index 0000000..80c8987 --- /dev/null +++ b/Assets/TinaX/Core/EditorExt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8a21be1e963a6444b4384a7513ab981 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/EditorExt/StyleDefine.meta b/Assets/TinaX/Core/EditorExt/StyleDefine.meta new file mode 100644 index 0000000..8d3e6d0 --- /dev/null +++ b/Assets/TinaX/Core/EditorExt/StyleDefine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fbf4b0a75d1a77546b4f780acbfd4033 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs b/Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs new file mode 100644 index 0000000..a6ead27 --- /dev/null +++ b/Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs @@ -0,0 +1,66 @@ +/* + * 该文档是对编辑器风格的定义,如编辑器下的文本颜色 等 + * 之所以放在TinaX.Core下而非Editor下,是因为我们需要在Console输出等地方使用到 + * + * + */ + +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; + #endif + +namespace TinaX.Core +{ + public static class XEditorStyleDefine + { + /// + /// 通常字体颜色 + /// + public static Color Color_Text_Normal + { + get + { +#if UNITY_EDITOR + if (EditorGUIUtility.isProSkin) + { + //黑皮肤 + return Color.white; + } + else + { + //白皮肤 + return Color.black; + } + +#else + return Color.black; +#endif + } + } + + public static Color Color_Blue + { + get + { +#if UNITY_EDITOR + if (EditorGUIUtility.isProSkin) + { + //黑皮肤 + return new Color(71f / 255f, 180f / 255f, 1, 1) ; + } + else + { + //白皮肤 + return Color.blue; + } + +#else + return Color.blue; +#endif + } + } + + + } +} diff --git a/Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs.meta b/Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs.meta new file mode 100644 index 0000000..6148cd0 --- /dev/null +++ b/Assets/TinaX/Core/EditorExt/StyleDefine/XEditorStyleDefine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a420897a116ef3343b9d57cd0ea5ffdc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend.meta b/Assets/TinaX/Core/Extend.meta new file mode 100644 index 0000000..15a7380 --- /dev/null +++ b/Assets/TinaX/Core/Extend.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d405072bdfc35b142b1254ce03db04b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/DotNet.meta b/Assets/TinaX/Core/Extend/DotNet.meta new file mode 100644 index 0000000..46ee466 --- /dev/null +++ b/Assets/TinaX/Core/Extend/DotNet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5db4b5d16cd795f428c6a19ada8d7e47 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/DotNet/String.meta b/Assets/TinaX/Core/Extend/DotNet/String.meta new file mode 100644 index 0000000..53919e2 --- /dev/null +++ b/Assets/TinaX/Core/Extend/DotNet/String.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8caf6da575ae71d4fa95c2612cc05f09 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs b/Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs new file mode 100644 index 0000000..0a55c3f --- /dev/null +++ b/Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using CatLib; + +namespace TinaX +{ + public static class StringExt + { + /// + /// 是否为邮箱地址 + /// + /// + /// + public static bool IsMail(this string _string) + { + return Regex.IsMatch(_string, + @"^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$"); + } + + /// + /// 高级比较,可设定是否忽略大小写 + /// + /// + /// + /// + /// + public static bool Contains(this string source, string toCheck, StringComparison comp) + { + return source.IndexOf(toCheck, comp) >= 0; + } + + /// + /// 是否含有中文 + /// + /// + /// + public static bool IncludeChinese(this string str) + { + bool flag = false; + foreach (var a in str) + { + if (a >= 0x4e00 && a <= 0x9fbb) + { + flag = true; + break; + } + } + return flag; + } + + /// + /// 反转字符串 + /// + /// + /// + public static string Reverse(this string str) + { + return Str.Reverse(str); + } + + /// + /// 是否为空字符串 + /// + /// + /// + public static bool IsNullOrEmpty(this string str) + { + return string.IsNullOrEmpty(str); + } + + /// + /// string Base64加密 + /// + /// + /// + public static string ToBase64(this string str) + { + var b = System.Text.Encoding.Default.GetBytes(str); + return Convert.ToBase64String(b); + } + + public static string Base64ToStr(this string str) + { + var b = Convert.FromBase64String(str); + return System.Text.Encoding.Default.GetString(b); + } + + } +} diff --git a/Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs.meta b/Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs.meta new file mode 100644 index 0000000..a0ecbc5 --- /dev/null +++ b/Assets/TinaX/Core/Extend/DotNet/String/StringExt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a02550d62b16db840888e9aa43454933 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs b/Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs new file mode 100644 index 0000000..b023b4d --- /dev/null +++ b/Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs @@ -0,0 +1,33 @@ +using System; +using CatLib; + +namespace TinaX +{ + public class StringHelper + { + + private static char[] constant = + { + '0','1','2','3','4','5','6','7','8','9', + 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' + }; + + /// + /// 生成随机字符串 + /// + /// + /// + public static string GenRandomStr(int Length) + { + System.Text.StringBuilder newRandom = new System.Text.StringBuilder(62); + Random rd = new Random(); + for (int i = 0; i < Length; i++) + { + newRandom.Append(constant[rd.Next(62)]); + } + return newRandom.ToString(); + } + + } +} diff --git a/Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs.meta b/Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs.meta new file mode 100644 index 0000000..a6d9617 --- /dev/null +++ b/Assets/TinaX/Core/Extend/DotNet/String/StringHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d027d9eb48b13743842b2732a5ee9d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine.meta b/Assets/TinaX/Core/Extend/UnityEngine.meta new file mode 100644 index 0000000..5ced42a --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05232e8b461e51a49aca48d981372177 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine/Enum.meta b/Assets/TinaX/Core/Extend/UnityEngine/Enum.meta new file mode 100644 index 0000000..0e656b7 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/Enum.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ebfbde2d8f7f0e4fa20e5185f2028ec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor.meta b/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor.meta new file mode 100644 index 0000000..b3cc371 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ef7fd71d68841445b4c2c204c8f73e2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs b/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs new file mode 100644 index 0000000..dd10ea0 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using TinaX; + + +namespace TinaXEditor +{ + [CustomPropertyDrawer(typeof(EnumLabelAttribute))] + public class EnumLabelDrawer : PropertyDrawer + { + private readonly List m_displayNames = new List(); + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var att = (EnumLabelAttribute)attribute; + var type = property.serializedObject.targetObject.GetType(); + var field = type.GetField(property.name); + var enumtype = field.FieldType; + foreach (var enumName in property.enumNames) + { + var enumfield = enumtype.GetField(enumName); + var hds = enumfield.GetCustomAttributes(typeof(HeaderAttribute), false); + m_displayNames.Add(hds.Length <= 0 ? enumName : ((HeaderAttribute)hds[0]).header); + } + EditorGUI.BeginChangeCheck(); + var value = EditorGUI.Popup(position, att.header, property.enumValueIndex, m_displayNames.ToArray()); + if (EditorGUI.EndChangeCheck()) + { + property.enumValueIndex = value; + } + } + } +} + diff --git a/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs.meta b/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs.meta new file mode 100644 index 0000000..0ba86f5 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/Enum/Editor/EnumLabelDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1fb987f2c5a0f78419b652d7863b3bc0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs b/Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs new file mode 100644 index 0000000..a5ff059 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX +{ + /// + /// 针对枚举类在编辑器中显示自定义文本的扩展 + /// + public class EnumLabelAttribute : HeaderAttribute + { + public EnumLabelAttribute(string header) : base(header) + { + + } + } +} + + diff --git a/Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs.meta b/Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs.meta new file mode 100644 index 0000000..e950f39 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/Enum/EnumLabelAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62f88a645c6ef654eb9d9d296c55f517 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine/GameObject.meta b/Assets/TinaX/Core/Extend/UnityEngine/GameObject.meta new file mode 100644 index 0000000..c9279e1 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/GameObject.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3a65e1cbc3589c64ca2be29b2df6a805 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs new file mode 100644 index 0000000..5366c9e --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs @@ -0,0 +1,219 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX +{ + public static class GameObjectExt + { + + public static void DestroySelf(this GameObject selfObj) + { + GameObject.Destroy(selfObj); + } + + /// + /// 显示 + /// + /// + /// + public static GameObject Show(this GameObject selfObj) + { + selfObj.SetActive(true); + return selfObj; + } + + /// + /// 隐藏 + /// + /// + /// + public static GameObject Hide(this GameObject selfObj) + { + selfObj.SetActive(false); + return selfObj; + } + + /// + /// 命名 + /// + /// + /// + /// + public static GameObject Name(this GameObject selfObj, string name) + { + selfObj.name = name; + return selfObj; + } + + + /// + /// 不要销毁 + /// + /// + /// + /// + public static GameObject DontDestroy(this GameObject selfObj) + { + GameObject.DontDestroyOnLoad(selfObj); + return selfObj; + } + + + /// + /// 获取Component,如果不存在就新建 + /// + /// + /// + public static T GetComponentOrAdd(this GameObject obj) where T : Component + { + var t = obj.GetComponent(); + + if (t == null) + { + t = obj.AddComponent(); + } + + return t; + } + + /// + /// [链式]移除Component, 如果它存在的话 + /// + /// + /// + public static GameObject RemoveComponentIfExists(this GameObject obj) where T : Component + { + var t = obj.GetComponent(); + + if (t != null) + { + Object.Destroy(t); + } + return obj; + } + + /// + /// [链式]移除全部相同的Components, 如果它们存在的话 + /// + /// + /// + public static GameObject RemoveComponentsIfExists(this GameObject obj) where T : Component + { + var t = obj.GetComponents(); + + for (var i = 0; i < t.Length; i++) + { + Object.Destroy(t[i]); + } + return obj; + } + + + /// + /// [链式]设置一个GameObject和它的所有子物体的Layer + /// + /// + /// + public static GameObject SetLayerRecursive(this GameObject o, int layer) + { + SetLayerInternal(o.transform, layer); + return o; + } + + private static void SetLayerInternal(Transform t, int layer) + { + t.gameObject.layer = layer; + + foreach (Transform o in t) + { + SetLayerInternal(o, layer); + } + } + + + /// + /// 在本帧直接销毁 + /// + /// + public static void DestroyNow(this GameObject selfGo) + { + GameObject.DestroyImmediate(selfGo); + } + + + /// + /// 获取或创建GameObject + /// + /// + public static GameObject FindOrCreateGo(this GameObject selfGo,string GameObjectName) + { + var trans = selfGo.transform.Find(GameObjectName); + if (trans == null) + { + var go = new GameObject(GameObjectName); + go.transform.SetParent(selfGo.transform); + return go; + } + else + { + return trans.gameObject; + } + } + + /// + /// 设置父级GameObject + /// + /// 返回自身 + public static GameObject SetParent(this GameObject selfGo, GameObject parentGameObject) + { + selfGo.transform.SetParent(parentGameObject.transform); + return selfGo; + } + + + /// + /// 设置世界坐标 + /// + /// + public static GameObject SetPosition(this GameObject selfGo, Vector3 position) + { + selfGo.transform.position = position; + return selfGo; + } + + + /// + /// 设置本地坐标 + /// + /// + public static GameObject SetLocalPosition(this GameObject selfGo, Vector3 localPosition) + { + selfGo.transform.localPosition = localPosition; + return selfGo; + } + + + /// + /// 检查组件是否存在 + /// + /// Game object + /// True when component is attached. + public static bool HasComponent(this GameObject gameObject) where T : Component + { + return gameObject.GetComponent() != null; + } + + /// + /// 是否为空 + /// + /// + /// + public static bool IsNull(this GameObject go) + { + return go == null; + } + + } +} + diff --git a/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs.meta b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs.meta new file mode 100644 index 0000000..37fd896 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectExt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a74507b07b6c74047b92a67c5dcb8c7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs new file mode 100644 index 0000000..0aa49f5 --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs @@ -0,0 +1,22 @@ +using System; +using UnityEngine; + +namespace TinaX +{ + public class GameObjectHelper + { + + + public static GameObject FindOrCreateGo(string name) + { + var go = GameObject.Find(name); + if (go == null) + { + go = new GameObject(name); + } + return go; + } + + + } +} diff --git a/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs.meta b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs.meta new file mode 100644 index 0000000..9b1975d --- /dev/null +++ b/Assets/TinaX/Core/Extend/UnityEngine/GameObject/GameObjectHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 73c6d020db6f5c44a832e0abc0a76b19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Setup.meta b/Assets/TinaX/Core/Setup.meta new file mode 100644 index 0000000..4e2a524 --- /dev/null +++ b/Assets/TinaX/Core/Setup.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fadae4a906bf8d542a0a0428d0da31e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Setup/FrameworkInfo.cs b/Assets/TinaX/Core/Setup/FrameworkInfo.cs new file mode 100644 index 0000000..8e6cdd4 --- /dev/null +++ b/Assets/TinaX/Core/Setup/FrameworkInfo.cs @@ -0,0 +1,30 @@ + +namespace TinaX +{ + + + /// + /// 记录Framework的版本信息 + /// + public static class FrameworkInfo + { + + /// + /// Framework名 + /// + public static string FrameworkName = "TinaX"; + + public static string FrameworkVersion = "Tina Open Version"; + + public const string FrameworkVersionName = "6.4.0"; + + public const int FrameworkVersionCode = 5; + + + public static string Framework_Url_Github = "https://github.com/yomunsam/TinaX"; + + public static string Framework_Url_Doc = "https://tinax.corala.space"; + + } +} + diff --git a/Assets/TinaX/Core/Setup/FrameworkInfo.cs.meta b/Assets/TinaX/Core/Setup/FrameworkInfo.cs.meta new file mode 100644 index 0000000..fbff388 --- /dev/null +++ b/Assets/TinaX/Core/Setup/FrameworkInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1be443ddb024294caed61f862fd1a69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/Setup/Setup.cs b/Assets/TinaX/Core/Setup/Setup.cs new file mode 100644 index 0000000..2baedfd --- /dev/null +++ b/Assets/TinaX/Core/Setup/Setup.cs @@ -0,0 +1,62 @@ +/* TinaX Setup + * +*/ +using System.IO; + +namespace TinaX +{ + public static class Setup + { + /// + /// 框架主目录在工程中的位置(Unity标准路径) + /// + public static readonly string Framework_Path = "Assets/TinaX"; + + /// + /// 框架配置文件目录(相对于Resources文件夹) + /// + public const string Framework_Config_Path = "TinaX/Config"; + + /// + /// 框架在场景中的基础GameObject名 + /// + public const string Framework_Base_GameObject = "TinaX"; + + public const string Framework_LocalStorage_TinaX = "tinaxCache"; + + public const string Framework_LocalStorage_App = "appCache"; + + + public const string Framework_VFS_AssetBundle_Ext_Name = ".xab"; + + /// + /// 补丁包文件后缀名 + /// + public const string Framework_Patch_Ext_Name = ".xpk"; + + + + +#if UNITY_EDITOR + + /// + /// Framework在工程Assets文件夹之外的工作目录 + /// + public static readonly string EditorFrameworkOutsideFolderPath = "TinaXWorkFolder"; + + /// + /// 框架资源包打包路径 + /// + public static string Framework_AssetSystem_Pack_Path = Path.Combine(EditorFrameworkOutsideFolderPath, "TinaX_VFS", "Platform"); + + public static string Framework_Build_Output_Path = Path.Combine(EditorFrameworkOutsideFolderPath, "TinaX_VFS", "Build"); + + public static string Framework_VFS_Patch_Path = Path.Combine(EditorFrameworkOutsideFolderPath,"TinaX_VFS","Patch"); + + + public static readonly string EditorFrameworkCacheFolder = Framework_Path + "/Editor/EditorCache"; + +#endif + + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/Setup/Setup.cs.meta b/Assets/TinaX/Core/Setup/Setup.cs.meta new file mode 100644 index 0000000..839e805 --- /dev/null +++ b/Assets/TinaX/Core/Setup/Setup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 32d4060cb8bbb1145b49c1990bd976a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 8b8e96d8bbd6f144a86d823b1ed36504, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System.meta b/Assets/TinaX/Core/System.meta new file mode 100644 index 0000000..eb6d201 --- /dev/null +++ b/Assets/TinaX/Core/System.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c107ee7a852e8df42a67e027c9fd1205 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Event.meta b/Assets/TinaX/Core/System/Event.meta new file mode 100644 index 0000000..2651a2f --- /dev/null +++ b/Assets/TinaX/Core/System/Event.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0855c36f66e191c4e884f6cffe39ca09 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Event/Event.cs b/Assets/TinaX/Core/System/Event/Event.cs new file mode 100644 index 0000000..d5de2b9 --- /dev/null +++ b/Assets/TinaX/Core/System/Event/Event.cs @@ -0,0 +1,199 @@ +//针对CatLib的事件系统的封装,提供给业务逻辑使用 +//TinaX内部使用CatLib的全局事件系统 + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using CatLib; +#if TinaX_CA_LuaRuntime_Enable +using XLua; +#endif + +namespace TinaX +{ + /// + /// TinaX事件系统 + /// + public static class XEvent + { + private static Dictionary> mEvents = new Dictionary>(); + private static Dictionary mEvent_id = new Dictionary(); + + /// + /// 注册事件 + /// + /// 事件名 + /// 回调 + public static int Register(string eventName, Action callback) + { + if (!mEvents.ContainsKey(eventName)) + { + mEvents.Add(eventName, new List()); + } + var event_info = new S_Event() + { + id = GetFreeId(), + eventName = eventName, + type = 1, + callback = callback + }; + mEvent_id.Add(event_info.id, event_info); + mEvents[eventName].Add(event_info); + return event_info.id; + } + + /// + /// 注册事件 + /// + /// + /// + public static int Register(string eventName, Action callback) + { + if (!mEvents.ContainsKey(eventName)) + { + mEvents.Add(eventName, new List()); + } + var event_info = new S_Event() + { + id = GetFreeId(), + eventName = eventName, + type = 3, + callback_param = callback + }; + mEvent_id.Add(event_info.id, event_info); + mEvents[eventName].Add(event_info); + return event_info.id; + } + +#if TinaX_CA_LuaRuntime_Enable + + /// + /// 注册事件 + /// + /// + /// + public static int RegisterFromLua(string eventName, LuaFunction callback) + { + if (!mEvents.ContainsKey(eventName)) + { + mEvents.Add(eventName, new List()); + } + var event_info = new S_Event() + { + id = GetFreeId(), + eventName = eventName, + type = 2, + callback_lua = callback + }; + mEvent_id.Add(event_info.id, event_info); + mEvents[eventName].Add(event_info); + return event_info.id; + } + +#endif + + public static void Remove(int id) + { + if (mEvent_id.ContainsKey(id)) + { + var event_Info = mEvent_id[id]; + mEvent_id.Remove(id); + mEvents[event_Info.eventName].Remove(event_Info); + } + } + + public static void Call(string eventName,System.Object param = null) + { + if (mEvents.ContainsKey(eventName)) + { + foreach(var item in mEvents[eventName]) + { + switch (item.type) + { + case 1: + if(item.callback != null) + { + item.callback(); + } + break; + case 2: +#if TinaX_CA_LuaRuntime_Enable + if (item.callback_lua != null) + { + item.callback_lua.Call(param); + } +#endif + break; + case 3: + if (item.callback_param != null) + { + item.callback_param(param); + } + break; + + } + } + } + } + +#if TinaX_CA_LuaRuntime_Enable + + public static void CallLua(string eventName, LuaTable param = null) + { + if (mEvents.ContainsKey(eventName)) + { + foreach (var item in mEvents[eventName]) + { + switch (item.type) + { + case 1: + if (item.callback != null) + { + item.callback(); + } + break; + case 2: + if (item.callback_lua != null) + { + item.callback_lua.Call(param); + } + break; + case 3: + if (item.callback_param != null) + { + item.callback_param(param); + } + break; + + } + } + } + } + +#endif + + public struct S_Event + { + public int id; + public string eventName; + public int type; + public Action callback; //type1 +#if TinaX_CA_LuaRuntime_Enable + public LuaFunction callback_lua; //type2 +#endif + public Action callback_param; //type3 + } + + private static int GetFreeId() + { + int id = UnityEngine.Random.Range(999, 9999); + while (mEvent_id.ContainsKey(id)) + { + id++; + } + return id; + } + } +} diff --git a/Assets/TinaX/Core/System/Event/Event.cs.meta b/Assets/TinaX/Core/System/Event/Event.cs.meta new file mode 100644 index 0000000..f893da9 --- /dev/null +++ b/Assets/TinaX/Core/System/Event/Event.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 86ac6968fa675e543a579bffa106c48a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N.meta b/Assets/TinaX/Core/System/I18N.meta new file mode 100644 index 0000000..1d1b71c --- /dev/null +++ b/Assets/TinaX/Core/System/I18N.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 119867674e6f6684caa6df9b2a564d5c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Config.meta b/Assets/TinaX/Core/System/I18N/Config.meta new file mode 100644 index 0000000..d467f38 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0842a4442170d814b886a04640f5a45d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs b/Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs new file mode 100644 index 0000000..136b7db --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs @@ -0,0 +1,124 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +namespace TinaX.I18N +{ + public class I18NConfig : ScriptableObject + { + [Header("启用国际化系统")] + public bool EnbaleI18N; + [Header("默认")] + public string defaultRegion; + [Header("区域列表")] + public S_I18N_Region[] Regions; + [Header("尝试自动匹配语言")] + public bool autoMatch = false; + } + + /// + /// I18N 地区 + /// + [System.Serializable] + public struct S_I18N_Region + { + /// + /// 区域名称 + /// + [Header("区域名")] + public string region_name; + [Header("语言文件包")] +#if UNITY_EDITOR && ODIN_INSPECTOR + [Sirenix.OdinInspector.FilePath] +#endif + public string[] language_file; + [Header("语言文件包Base64")] +#if UNITY_EDITOR && ODIN_INSPECTOR + [Sirenix.OdinInspector.FilePath] +#endif + public string[] language_file_base64; + + + public E_Language language_bind; + } + + /// + /// I18N系统内置语言 + /// + [System.Serializable] + public enum E_Language + { + none, + /// + /// 巴斯克 + /// + Basque, + /// + /// 简体中文 + /// + ChineseSimplified, + /// + /// 繁体中文 + /// + ChineseTraditional, + /// + /// 捷克 + /// + Czech, + /// + /// 英语 + /// + English, + /// + /// 法语 + /// + French, + /// + /// 德语 + /// + German, + /// + /// 冰岛语 + /// + Icelandic, + /// + /// 意大利语 + /// + Italian, + /// + /// 日语 + /// + Japanese, + /// + /// 韩语 + /// + Korean, + /// + /// 挪威语 + /// + Norwegian, + /// + /// 波兰语 + /// + Polish, + /// + /// 俄语 + /// + Russian, + /// + /// 泰语 + /// + Thai, + /// + /// 土耳其语 + /// + Turkish, + /// + /// 越南语 + /// + Vietnamese + } + +} + diff --git a/Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs.meta b/Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs.meta new file mode 100644 index 0000000..25afb64 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Config/I18NConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20ef2b13925314c4188e7cb270b3be2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b2385ab0902e6dc4c9b179f964c82fff, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Editor.meta b/Assets/TinaX/Core/System/I18N/Editor.meta new file mode 100644 index 0000000..7f85ea9 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4121382b038d2242bc105c88c25c1d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Editor/Script.meta b/Assets/TinaX/Core/System/I18N/Editor/Script.meta new file mode 100644 index 0000000..d3c6e71 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Editor/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e59720d384760f64598a7a9610ca56df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs b/Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs new file mode 100644 index 0000000..0fd5394 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs @@ -0,0 +1,309 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using TinaX.I18N; +using TinaX; + +namespace TinaXEditor.I18N +{ + /// + /// I18N编辑器时语言包缓存与预读系统 + /// + [InitializeOnLoad] + public static class XI18NCacheEditor + { + /// + /// 当前配置 + /// + private static I18NConfig mCurConfig; + /// + /// 当前配置中的所有区域 + /// + private static List mCurRegions = new List(); + + /// + /// 当前默认区域中的所有语言包缓存。(只有配置的默认语言会缓存,以节省内存资源) + /// + private static List mCurRegionLanguageFilesInfo = new List(); + + static XI18NCacheEditor() + { + //添加配置文件到资源监听 + AssetInputHandle.AddAssetListener("Assets/Resources/" + TinaX.Setup.Framework_Config_Path + "/" + TinaX.Conf.ConfigPath.i18n, OnConfigFileChanged); + + + + mCurConfig = TinaX.Config.GetTinaXConfig(TinaX.Conf.ConfigPath.i18n); + if (mCurConfig != null) + { + RefreshLanguageFiles(); + } + } + + /// + /// 获取当前定义的所有Region + /// + /// + public static string[] GetRegions() + { + return mCurRegions.ToArray(); + } + + public static string GetGameStringByKey(string key, out string fileName) + { + if (mCurConfig == null) { fileName = "unknow"; return key; } + foreach(var item in mCurRegionLanguageFilesInfo) + { + if(item.region == mCurConfig.defaultRegion) + { + bool exist; + string value = item.GetGameStringByKey(key,out exist); + if (exist) + { + fileName = System.IO.Path.GetFileName(item.path); + return value; + } + } + } + fileName = "unknow"; + return key; + } + + public static string GetGameStringByKey(string key) + { + if (mCurConfig == null) { return key; } + foreach (var item in mCurRegionLanguageFilesInfo) + { + if (item.region == mCurConfig.defaultRegion) + { + bool exist; + string value = item.GetGameStringByKey(key, out exist); + if (exist) + { + + return value; + } + } + } + return key; + } + + + + + private static void OnConfigFileChanged(string path,AssetInputHandle.ResChangeType type) + { + if (type == AssetInputHandle.ResChangeType.CreateOrModify) + { + mCurConfig = TinaX.Config.GetTinaXConfig(TinaX.Conf.ConfigPath.i18n); + if (mCurConfig != null) + { + RefreshLanguageFiles(); + } + } + } + + /// + /// 语言包缓存是否存在 + /// + /// + /// + private static bool IsLangCacheExist(string path) + { + foreach(var item in mCurRegionLanguageFilesInfo) + { + if(item.path == path) + { + return true; + } + } + return false; + } + + /// + /// 如果语言包缓存存在,则删掉ta + /// + /// + /// + private static void RemoveIfLangCacheExist(string path) + { + foreach (var item in mCurRegionLanguageFilesInfo) + { + if (item.path == path) + { + mCurRegionLanguageFilesInfo.Remove(item); + return; + } + } + + } + + private static void RefreshLanguageFiles() + { + if(mCurConfig == null) + { + return; + } + mCurRegionLanguageFilesInfo = new List(); + //遍历所有区域 + foreach (var item in mCurConfig.Regions) + { + mCurRegions.Add(item.region_name); + if(item.region_name == mCurConfig.defaultRegion) + { + //把语言包统统缓存起来 + foreach(var lang in item.language_file) + { + RemoveIfLangCacheExist(lang); + var textasset = AssetDatabase.LoadAssetAtPath(lang); + if (textasset != null) + { + mCurRegionLanguageFilesInfo.Add(new S_LanguageFile_Info() + { + path = lang, + region = item.region_name, + isBase64 = false, + data = JsonUtility.FromJson(textasset.text) + }); + } + //把语言添加进变动监听 + AssetInputHandle.AddAssetListener(lang, OnLangJsonFileChanged); + } + + foreach (var lang in item.language_file_base64) + { + if (!IsLangCacheExist(lang)) + { + var textasset = AssetDatabase.LoadAssetAtPath(lang); + if (textasset != null) + { + mCurRegionLanguageFilesInfo.Add(new S_LanguageFile_Info() + { + path = lang, + region = item.region_name, + isBase64 = true, + data = JsonUtility.FromJson(textasset.text) + }); + } + + } + //把语言添加进变动监听 + AssetInputHandle.AddAssetListener(lang, OnLangJsonFileChanged); + } + + + } + } + + + } + + private static void OnLangJsonFileChanged(string path, AssetInputHandle.ResChangeType type) + { + if(type == AssetInputHandle.ResChangeType.Remove) + { + RemoveIfLangCacheExist(path); + AssetInputHandle.RemoveAssetListener(path, OnLangJsonFileChanged); + } + if(type == AssetInputHandle.ResChangeType.CreateOrModify) + { + foreach(var item in mCurRegionLanguageFilesInfo) + { + if (item.path == path) + { + item.RefreshFile(); + break; + } + } + } + } + + + /// + /// 语言包文件信息 + /// + private struct S_LanguageFile_Info + { + /// + /// 文件路径 + /// + public string path; + public string region; + public bool isBase64; + public I18NJsonTpl data; + + private Dictionary mJsonKV; + + public string GetGameStringByKey(string key,out bool exist) + { + if (mJsonKV == null) + { + GenJsonKVCache(); + } + if (mJsonKV.ContainsKey(key)) + { + exist = true; + return mJsonKV[key]; + } + else + { + exist = false; + return key; + } + } + + /// + /// 文件有变动时,调用这里刷新解析 + /// + /// + public void RefreshFile() + { + var text = AssetDatabase.LoadAssetAtPath(path); + if(text != null) + { + data = JsonUtility.FromJson(text.text); + GenJsonKVCache(); + } + } + + + private void GenJsonKVCache() + { + mJsonKV = new Dictionary(); + foreach(var item in data.data) + { + if (mJsonKV.ContainsKey(item.key)) + { + if (isBase64) + { + mJsonKV[item.key] = item.value.Base64ToStr(); + } + else + { + mJsonKV[item.key] = item.value; + } + + } + else + { + if (isBase64) + { + mJsonKV.Add(item.key, item.value.Base64ToStr()); + } + else + { + mJsonKV.Add(item.key, item.value); + } + + } + } + } + } + + + + } + +} + diff --git a/Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs.meta b/Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs.meta new file mode 100644 index 0000000..dc793e1 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Editor/Script/XI18NCacheEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26c9e36d0cce85a449b9f985bd8819dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Script.meta b/Assets/TinaX/Core/System/I18N/Script.meta new file mode 100644 index 0000000..ee8caaf --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d59ed7b3532f344aa3a6d492611b697 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Script/I18NCat.cs b/Assets/TinaX/Core/System/I18N/Script/I18NCat.cs new file mode 100644 index 0000000..7d6a2ba --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/I18NCat.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using CatLib; + +namespace TinaX +{ + + + public class XI18N : Facade + { + public static I18N.IXI18N I + { + get + { + return XI18N.Instance; + } + } + } + +} + +namespace TinaX.Cat +{ + public class I18NProvide : IServiceProvider + { + public void Init() + { + + } + + public void Register() + { + App.Singleton().Alias(); + } + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/System/I18N/Script/I18NCat.cs.meta b/Assets/TinaX/Core/System/I18N/Script/I18NCat.cs.meta new file mode 100644 index 0000000..2dd7ffc --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/I18NCat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e12d75a65710d84eab6e4cfbd054ae5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs b/Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs new file mode 100644 index 0000000..530a395 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +namespace TinaX.I18N +{ + public class I18NJsonTpl + { + public S_KV[] data; + + [System.Serializable] + public struct S_KV + { + public string key; + public string value; + } + } +} + diff --git a/Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs.meta b/Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs.meta new file mode 100644 index 0000000..7dfc33e --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/I18NJsonTpl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7235449ab29506e40829e292a92ab79d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Script/IXI18N.cs b/Assets/TinaX/Core/System/I18N/Script/IXI18N.cs new file mode 100644 index 0000000..beac207 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/IXI18N.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX.I18N +{ + /// + /// 国际化系统 + /// + public interface IXI18N + { + void Start(); + + /// + /// 设置地区 + /// + /// + /// + IXI18N UseRegion(string region); + /// + /// 根据Key获取相应的字符 + /// + /// + /// + string GetString(string key); + } + +} diff --git a/Assets/TinaX/Core/System/I18N/Script/IXI18N.cs.meta b/Assets/TinaX/Core/System/I18N/Script/IXI18N.cs.meta new file mode 100644 index 0000000..ad413bb --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/IXI18N.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0fa7b8fbd4325904c89e6cbc51acf875 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs b/Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs new file mode 100644 index 0000000..6d913ca --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs @@ -0,0 +1,199 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TinaX.Conf; + +namespace TinaX.I18N +{ + public class XI18NMgr : IXI18N + { + private I18NConfig mConfig; + private E_Language mCurSystemLanguage = E_Language.Vietnamese; + private bool mEnable = false; + private string mCurRegion; + /// + /// 当前语言包中的语言字典 + /// + private Dictionary m_dict_cur_language = new Dictionary(); + + + public XI18NMgr() + { + mConfig = Config.GetTinaXConfig(ConfigPath.i18n); + if (mConfig == null) + { + mEnable = false; + return; + } + mEnable = mConfig.EnbaleI18N; + if (!mEnable) + { + return; + } + mCurSystemLanguage = GetLanguageByUnityLanguage(Application.systemLanguage); + string _region = "none"; + if (mConfig.defaultRegion != null && mConfig.defaultRegion != "") + { + _region = mConfig.defaultRegion; + } + if (mConfig.autoMatch) + { + foreach (var item in mConfig.Regions) + { + if(item.language_bind == mCurSystemLanguage) + { + _region = item.region_name; + } + } + } + if (_region != "none") + { + mCurRegion = _region; + UseRegion(mCurRegion); + } + } + + public void Start() + { + + } + + public IXI18N UseRegion(string region) + { + if (!mEnable) { return this; } + Debug.Log("[TinaX][I18N]启用地区:" + region); + //将定义语言的所有语言文件读入 + var region_s = GetRegionByStr(region); + //读普通Json + foreach(var item in region_s.language_file) + { + var json_file = AssetsMgr.Instance.LoadAsset(item); + if(json_file != null) + { + var jsonObj = JsonUtility.FromJson(json_file.text); + foreach(var v in jsonObj.data) + { + if(v.key != "" && v.value != "" && v.key != null && v.value != null) + { + if (!m_dict_cur_language.ContainsKey(v.key)) + { + m_dict_cur_language.Add(v.key, v.value); + } + else + { + m_dict_cur_language[v.key] = v.value; + } + } + } + } + } + //读Base64 + foreach (var item in region_s.language_file_base64) + { + var json_file = AssetsMgr.Instance.LoadAsset(item); + if (json_file != null) + { + var jsonObj = JsonUtility.FromJson(json_file.text); + foreach (var v in jsonObj.data) + { + if (v.key != "" && v.value != "" && v.key != null && v.value != null) + { + if (!m_dict_cur_language.ContainsKey(v.key)) + { + m_dict_cur_language.Add(v.key, v.value.Base64ToStr()); + } + else + { + m_dict_cur_language[v.key] = v.value.Base64ToStr(); + } + } + } + } + } + + return this; + } + + + public string GetString(string key) + { + if (m_dict_cur_language.ContainsKey(key)) + { + return m_dict_cur_language[key]; + } + else + { + return key; + } + } + + + /// + /// Unity的语言枚举转TinaX语言枚举 + /// + /// + /// + private E_Language GetLanguageByUnityLanguage(SystemLanguage lang) + { + switch (lang) + { + default: + return E_Language.none; + case SystemLanguage.Chinese: + return E_Language.ChineseSimplified; + case SystemLanguage.ChineseSimplified: + return E_Language.ChineseSimplified; + case SystemLanguage.Basque: + return E_Language.Basque; + case SystemLanguage.ChineseTraditional: + return E_Language.ChineseTraditional; + case SystemLanguage.Czech: + return E_Language.Czech; + case SystemLanguage.English: + return E_Language.English; + case SystemLanguage.French: + return E_Language.French; + case SystemLanguage.German: + return E_Language.German; + case SystemLanguage.Icelandic: + return E_Language.Icelandic; + case SystemLanguage.Italian: + return E_Language.Italian; + case SystemLanguage.Japanese: + return E_Language.Japanese; + case SystemLanguage.Korean: + return E_Language.Korean; + case SystemLanguage.Norwegian: + return E_Language.Norwegian; + case SystemLanguage.Polish: + return E_Language.Polish; + case SystemLanguage.Russian: + return E_Language.Russian; + case SystemLanguage.Thai: + return E_Language.Thai; + case SystemLanguage.Turkish: + return E_Language.Turkish; + case SystemLanguage.Vietnamese: + return E_Language.Vietnamese; + } + } + + + private S_I18N_Region GetRegionByStr(string region) + { + if (mConfig == null) + { + return new S_I18N_Region(); + } + foreach(var item in mConfig.Regions) + { + if (item.region_name == region) + { + return item; + } + } + return new S_I18N_Region(); + } + } +} + diff --git a/Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs.meta b/Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs.meta new file mode 100644 index 0000000..15cd1a0 --- /dev/null +++ b/Assets/TinaX/Core/System/I18N/Script/XI18NMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9192aa2164d5bb1428aec5ce2b2fa983 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Logger.meta b/Assets/TinaX/Core/System/Logger.meta new file mode 100644 index 0000000..62efaef --- /dev/null +++ b/Assets/TinaX/Core/System/Logger.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 576335c9e7320f644bc10728db1ab491 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Logger/Config.meta b/Assets/TinaX/Core/System/Logger/Config.meta new file mode 100644 index 0000000..149aaa5 --- /dev/null +++ b/Assets/TinaX/Core/System/Logger/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a0b8d5ed3398bb4fbba11b22c4dada0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Logger/Config/LogConfig.cs b/Assets/TinaX/Core/System/Logger/Config/LogConfig.cs new file mode 100644 index 0000000..1a05e98 --- /dev/null +++ b/Assets/TinaX/Core/System/Logger/Config/LogConfig.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +namespace TinaX.Logger +{ + public class LogConfig + { + + } + +} diff --git a/Assets/TinaX/Core/System/Logger/Config/LogConfig.cs.meta b/Assets/TinaX/Core/System/Logger/Config/LogConfig.cs.meta new file mode 100644 index 0000000..c886108 --- /dev/null +++ b/Assets/TinaX/Core/System/Logger/Config/LogConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 593dca57342b40d488e8e378c027ad95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Logger/Script.meta b/Assets/TinaX/Core/System/Logger/Script.meta new file mode 100644 index 0000000..5bba8dd --- /dev/null +++ b/Assets/TinaX/Core/System/Logger/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c49e1574e7b823459115ec3f4388596 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Logger/Script/XLog.cs b/Assets/TinaX/Core/System/Logger/Script/XLog.cs new file mode 100644 index 0000000..7270522 --- /dev/null +++ b/Assets/TinaX/Core/System/Logger/Script/XLog.cs @@ -0,0 +1,120 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX +{ + public static class XLog + { + /// + /// 输出 + /// + /// + public static void Print(object msg) + { + Debug.Log(msg); + } + + /// + /// 输出 + /// + /// + /// + public static void Print(object msg,GameObject go) + { + Debug.Log(msg,go); + } + + /// + /// 输出警告 + /// + /// + public static void PrintW(object msg) + { + Debug.LogWarning(msg); + } + + /// + /// 输出警告 + /// + /// + /// + public static void PrintW(object msg,GameObject go) + { + Debug.LogWarning(msg,go); + } + + /// + /// 输出错误 + /// + /// + public static void PrintE(object msg) + { + Debug.LogError(msg); + } + + + /// + /// 输出错误 + /// + /// + /// + public static void PrintE(object msg,GameObject go) + { + Debug.LogError(msg,go); + } + + + /// + /// 获取红色富文本 + /// + /// + /// + public static string GetColorString_Red(string content) + { +#if UNITY_EDITOR + //编辑器下,根据Unity Editor皮肤选择 + if (UnityEditor.EditorGUIUtility.isProSkin) + { + //黑皮肤 + return "" + content + ""; + } + else + { + //白皮肤 + return "" + content + ""; + } + +#else + return "" + content + ""; //他们说语句中多个加号拼接字符串这种情况,C#的编译器会自动优化,那我就先不管了 +#endif + } + + + /// + /// 获取蓝色富文本 + /// + /// + /// + public static string GetColorString_Blue(string content) + { +#if UNITY_EDITOR + //编辑器下,根据Unity Editor皮肤选择 + if (UnityEditor.EditorGUIUtility.isProSkin) + { + //黑皮肤 + return "" + content + ""; + } + else + { + //白皮肤 + return "" + content + ""; + } + +#else + return "" + content + ""; //他们说语句中多个加号拼接字符串这种情况,C#的编译器会自动优化,那我就先不管了 +#endif + } + } +} + diff --git a/Assets/TinaX/Core/System/Logger/Script/XLog.cs.meta b/Assets/TinaX/Core/System/Logger/Script/XLog.cs.meta new file mode 100644 index 0000000..5c3bb74 --- /dev/null +++ b/Assets/TinaX/Core/System/Logger/Script/XLog.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9adea79f4468e274ca3d7226abad0f74 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua.meta b/Assets/TinaX/Core/System/Lua.meta new file mode 100644 index 0000000..a0aef4c --- /dev/null +++ b/Assets/TinaX/Core/System/Lua.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6f9a7f1712657e4fb1f69974770e6b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Config.meta b/Assets/TinaX/Core/System/Lua/Config.meta new file mode 100644 index 0000000..1f81e49 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 435d928f3a594ee46b8980a636d4ae01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs b/Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs new file mode 100644 index 0000000..7baea3e --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs @@ -0,0 +1,79 @@ + + +using UnityEngine; +#if UNITY_EDITOR && ODIN_INSPECTOR +using Sirenix.OdinInspector; +#endif + +namespace TinaX.Lua +{ + public class LuaConfig : ScriptableObject + { + +#if TinaX_CA_LuaRuntime_Enable + +#if UNITY_EDITOR && ODIN_INSPECTOR + [Title("Lua Script Config")] + [Space(10)] +#endif + public bool EnableLua; + + +#if UNITY_EDITOR && ODIN_INSPECTOR + + [Header("框架启动后运行:")] + [Tooltip("不需要启动则留空")] + [InfoBox("不需要启动则留空")] + [FilePath(Extensions = "txt")] + [ShowIf("EnableLua")] +#endif + public string LuaScriptStartup; + +#if UNITY_EDITOR && ODIN_INSPECTOR + + [Space(3)] +#endif + [EnumLabel("Lua文件后缀名")] + public LuaFileExten FileExten = LuaFileExten.txt; + + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("Debug功能")] + [Header("IDE调试扩展")] + +#endif + [EnumLabel("IDE调试模式")] + public IDE_DebugExt IDE_Debug; + + + + /// + /// IDE调试扩展 + /// + [System.Serializable] + public enum IDE_DebugExt + { + [Header("不启用")] + None = 0, + [Header("LuaIDE (VSCode)")] + LuaIde = 1, + [Header("LuaPanda (暂取消支持)")] + LuaPanda = 2 + } + + public bool IsEnableLuaIDE() + { + return IDE_Debug == IDE_DebugExt.LuaIde; + } + public bool IsEnableLuaPanda() + { + return IDE_Debug == IDE_DebugExt.LuaPanda; + } + +#endif + + } + +} + + diff --git a/Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs.meta b/Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs.meta new file mode 100644 index 0000000..1cd62b1 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Config/LuaConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03c0f55d1bea9a645800ba74a2aba7f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b2385ab0902e6dc4c9b179f964c82fff, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Editor.meta b/Assets/TinaX/Core/System/Lua/Editor.meta new file mode 100644 index 0000000..abae184 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06605df39bfddac468c98af80699dd9e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs b/Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs new file mode 100644 index 0000000..d690d41 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs @@ -0,0 +1,177 @@ +#if TinaX_CA_LuaRuntime_Enable + +using System; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; +using XLua; + +namespace TinaXEditor.Lua +{ + public static class LuaBuildConst + { + [LuaCallCSharp] + //[ReflectionUse] + public static List LuaCallCSharpNestedTypes + { + get + { + var types = new List(); + foreach (var type in LuaCallCSharpList) + { + foreach (var nested_type in type.GetNestedTypes(BindingFlags.Public)) + { + if ((!nested_type.IsAbstract && typeof(Delegate).IsAssignableFrom(nested_type)) + || nested_type.IsGenericTypeDefinition) + { + continue; + } + + types.Add(nested_type); + } + } + + return types; + } + } + + [LuaCallCSharp] + //[ReflectionUse] + public static List LuaCallCSharpList = new List() { + + #region Unity + + //Unity + typeof(UnityEngine.Application), + typeof(GameObject), + typeof(MonoBehaviour), + typeof(Behaviour), + typeof(Component), + typeof(RectTransform), + typeof(Transform), + typeof(UnityEngine.UI.Text), + typeof(UnityEngine.UI.Button), + typeof(UnityEngine.UI.Image), + typeof(UnityEngine.Events.UnityEvent), + typeof(UnityEngine.Events.UnityEventBase), + typeof(AudioClip), + typeof(UnityEngine.Object), + typeof(Application), + typeof(Vector2), + typeof(Vector3), + + + #endregion + + + //DotNet + typeof(System.IO.Path), + //typeof(System.IO.Directory), + //typeof(System.IO.File), + + typeof(System.Object), + typeof(List), + typeof(Action), + + + #region TinaX + + //TinaX + typeof(TinaX.Setup), + + typeof(TinaX.XSound), + typeof(TinaX.Sound.SoundTrack), + typeof(TinaX.AssetsMgr), + typeof(TinaX.VFS.XAssetsManager), + + typeof(TinaX.Lua.LuaBehaviour), + + + + + typeof(TinaX.XLog), + typeof(TinaX.XCore), + typeof(TinaX.GameObjectExt), + typeof(TinaX.StringExt), + + //TinaX System + typeof(TinaX.Sound.XSoundMgr), + typeof(TinaX.TimeMachine), + typeof(TinaX.XTimeMachine), + + + typeof(TinaX.XI18N), + typeof(TinaX.I18N.XI18NMgr), + + //UIKit + typeof(TinaX.UIKit.XButton), + typeof(TinaX.UIKit.XImage), + typeof(TinaX.UIKit.XText), + typeof(TinaX.UIKit.UIKit), + typeof(TinaX.UIKit.XUIManager), + typeof(TinaX.UIKit.UIEntity), + typeof(TinaX.UIKit.XUIMgrGateway), + typeof(TinaX.UIKit.IUIEntity), + typeof(TinaX.UIKit.IUIMgr), + + + #endregion + + #region 第三方依赖 + + //thirdParty + + typeof(SuperScrollView.LoopListView2), + typeof(SuperScrollView.LoopListViewItem2), + + + //Unirx + typeof(UniRx.Observable), + + + #endregion + }; + + [CSharpCallLua] + public static List CSharpCallLuaList = new List() + { + typeof(Action), + typeof(Action), + typeof(Action), + typeof(Action), + typeof(Action), + typeof(Action), + typeof(Action), + typeof(Action), + + //thirdparty + typeof(System.Func), + typeof(Action) + }; + + + + [BlackList] + public static List> BlackList = new List>() { + //Unity + new List(){ "UnityEngine.UI.Text", "OnRebuildRequested"}, + + + new List(){ "TinaX.VFS.XAssetsManager", "Debug_GetABLoadedInfo"}, + + new List(){ "TinaX.Setup", "EditorFrameworkOutsideFolderPath"}, + new List(){ "TinaX.Setup", "Framework_AssetSystem_Pack_Path"}, + new List(){ "TinaX.Setup", "Framework_Build_Output_Path"}, + new List(){ "TinaX.Setup", "Framework_VFS_Patch_Path"}, + new List(){ "TinaX.Setup", "EditorFrameworkCacheFolder"}, + + new List(){ "TinaX.Lua.LuaBehaviour", "HotOverload"} + + }; + + } + + +} + +#endif \ No newline at end of file diff --git a/Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs.meta b/Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs.meta new file mode 100644 index 0000000..4ccdf23 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Editor/LuaBuildConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e61ed44717e5b74a85673a78eba4f93 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Script.meta b/Assets/TinaX/Core/System/Lua/Script.meta new file mode 100644 index 0000000..fbd46fe --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 484eb5b56a409584a8321ffe6382707d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs b/Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs new file mode 100644 index 0000000..f1ddcaf --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs @@ -0,0 +1,55 @@ +#if TinaX_CA_LuaRuntime_Enable + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TinaX.Lua +{ + public interface ILuaMgr + { + void Start(); + + LuaConfig GetConfig(); + + void RunFile(string path); + + /// + /// 运行Lua function + /// + /// Global下的Lua function 的Path + void RunLuaFunc(string FuncPath); + + /// + /// 运行Lua Global Function,不传入任何参数,但获取一个返回值 + /// + /// 返回值类型 + /// Global下的Lua function 的Path + /// + R RunLuaFuncR(string FuncPath); + + /// + /// 运行Lua Global Function,附带传入一个参数 + /// + /// 附带参数的类型 + /// Global下的Lua function 的Path + /// 参数内容 + void RunLuaFunc(string FuncPath, T Param1); + + + /// + /// 运行Lua Global Function,附带传入一个参数,并接收一个返回值 + /// + /// 传入参数的类型 + /// 返回值的类型 + /// Global下的Lua function 的Path + /// 参数内容 + /// + R RunLuaFuncR(string FuncPath, T Param1); + } +} + + +#endif \ No newline at end of file diff --git a/Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs.meta b/Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs.meta new file mode 100644 index 0000000..60c4ceb --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/ILuaMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5788f73bad464704199c13bd6d3fbc2b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs new file mode 100644 index 0000000..ecf8a09 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs @@ -0,0 +1,347 @@ + + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TinaX.UIKit; +#if TinaX_CA_LuaRuntime_Enable +using XLua; +#endif +#if UNITY_EDITOR && ODIN_INSPECTOR +using UnityEditor; +using Sirenix.OdinInspector; +#endif + +namespace TinaX.Lua +{ + [DisallowMultipleComponent] +#if TinaX_CA_LuaRuntime_Enable + [AddComponentMenu("TinaX/Lua/LuaBehaviour")] +#endif + public class LuaBehaviour : MonoBehaviour + { +#if TinaX_CA_LuaRuntime_Enable + #region 配置 +#if UNITY_EDITOR && ODIN_INSPECTOR + [BoxGroup("对象数据绑定")] + [Header("Lua脚本")] +#endif + public TextAsset LuaScript; + +#if UNITY_EDITOR && ODIN_INSPECTOR + [BoxGroup("对象数据绑定")] + [Header("更新次序")] +#endif + public int UpdateOrder = 0; +#if UNITY_EDITOR && ODIN_INSPECTOR + [BoxGroup("对象数据绑定")] + [Header("注入绑定对象")] + [TableList] +#endif + public Injection[] Injections; +#if UNITY_EDITOR && ODIN_INSPECTOR + [BoxGroup("对象数据绑定")] + [Header("注入绑定字符串")] + [TableList] +#endif + public Injection_String[] Injections_str; +#if UNITY_EDITOR && ODIN_INSPECTOR + [BoxGroup("对象数据绑定")] + [Button("绑定编辑窗口")] + static void OpenBindEditor() + { + EditorWindow.GetWindow().Show(); + } +#endif + //#if UNITY_EDITOR + // [BoxGroup("运行模式")] + // [Header("独立虚拟机")] + // [Tooltip("慎用")] + //#endif + // public bool standaloneVM = false; + +#if UNITY_EDITOR && ODIN_INSPECTOR + [BoxGroup("运行模式")] + [Header("UI模式")] +#endif + public bool UIBehaviour = false; + + + +#endregion + + [HideInInspector] + public LuaTable scriptData; + + protected System.Action luaStart; + protected System.Action luaUpdate; + protected System.Action luaLateUpdate; + protected System.Action luaOnDestroy; + protected LuaFunction luaOnUIOpenMessage; + protected LuaFunction luaOnUICloseMessage; + + + private bool lua_runed = false; + private bool enable_update = false; + private bool enable_lateupdate = false; + private UIEntity mUIEntity; + +#region 生命周期 + + private void Awake() + { + if(LuaScript == null) + { + return; + } + if (!LuaManager.Inited) + { + return; + } + scriptData = LuaManager.LuaVM.NewTable(); + LuaTable meta = LuaManager.LuaVM.NewTable(); + meta.Set("__index", LuaManager.LuaVM.Global); + scriptData.SetMetaTable(meta); + meta.Dispose(); + + scriptData.Set("self", this); + //scriptData.Set("", EventRegister); + + if (Injections != null && Injections.Length > 0) + { + foreach (var item in Injections) + { + if (item.Name != "" && item.Name != null && item.Object != null) + { + scriptData.Set(item.Name, item.Object); + } + } + } + + if (Injections_str != null && Injections_str.Length > 0) + { + foreach (var item in Injections_str) + { + if (item.Name != "" && item.Name != null && item.str != null) + { + scriptData.Set(item.Name, item.str); + } + } + } + + //Debug.Log("文件名:" + LuaScript.name); + LuaManager.LuaVM.DoString(LuaScript.text, LuaScript.name, scriptData); + Action luaAwake = scriptData.Get("Awake"); + scriptData.Get("Start", out luaStart); + scriptData.Get("Update", out luaUpdate); + scriptData.Get("OnDestroy", out luaOnDestroy); + scriptData.Get("LateUpdate", out luaLateUpdate); + scriptData.Get("OnUIOpenMessage", out luaOnUIOpenMessage); + scriptData.Get("OnUICloseMessage", out luaOnUICloseMessage); + //luaOnUIOpenMessage = scriptData.Get("OnUIOpenMessage"); + + + if(luaAwake != null) + { + luaAwake(); + } + if (luaUpdate != null) + { + if (luaUpdate.GetInvocationList().Length >= 1) + { + enable_update = true; + TimeMachine.I.AddUpdate(xUpdate, UpdateOrder); + } + } + if (luaLateUpdate != null) + { + if (luaLateUpdate.GetInvocationList().Length >= 1) + { + enable_lateupdate = true; + TimeMachine.I.AddUpdate(xLateUpdate, UpdateOrder); + } + } + + + lua_runed = true; + mUIEntity = gameObject.GetComponent(); + if(mUIEntity== null) + { + UIBehaviour = false; + } + } + + private void Start() + { + if(luaStart != null && lua_runed) + { + luaStart(); + } + } + + private void OnDestroy() + { + if (lua_runed) + { + if(luaOnDestroy != null) + { + luaOnDestroy(); + } + luaOnDestroy = null; + luaUpdate = null; + luaStart = null; + luaLateUpdate = null; + scriptData.Dispose(); + Injections = null; + Injections_str = null; + } + if (enable_update) + { + TimeMachine.I.RemoveUpdate(xUpdate, UpdateOrder); + } + if (enable_lateupdate) + { + TimeMachine.I.RemoveLateUpdate(xLateUpdate, UpdateOrder); + } + if (mEventIds.Count > 0) + { + foreach(var i in mEventIds) + { + XEvent.Remove(i); + } + } + } + + private void xUpdate() + { + luaUpdate(); + } + + private void xLateUpdate() + { + luaLateUpdate(); + } + +#endregion + + public void OnUIOpenMessage(System.Object param) + { + if(luaOnUIOpenMessage != null && UIBehaviour) + { + luaOnUIOpenMessage.Call(param); + } + } + + + + public void OnUIOpenMessage_LuaTable(LuaTable param) + { + if (luaOnUIOpenMessage != null && UIBehaviour) + { + luaOnUIOpenMessage.Call(param); + } + } + + public void OnUICloseMessage(System.Object param) + { + if (luaOnUICloseMessage != null && UIBehaviour) + { + luaOnUICloseMessage.Call(param); + } + } + + public void OnUICloseMessage_LuaTable(LuaTable param) + { + if (luaOnUICloseMessage != null && UIBehaviour) + { + luaOnUICloseMessage.Call(param); + } + } + +#region 安全的事件系统 + + private List mEventIds = new List(); + + public int EventRegister(string eventName,LuaFunction callback) + { + var id = XEvent.RegisterFromLua(eventName, callback); + mEventIds.Add(id); + return id; + } + + +#endregion + +#region UI扩展 + + + public RectTransform GetRectTransform() + { + return gameObject.GetComponent(); + } + + /// + /// 关掉自己 + /// + public void CloseMe() + { + if (UIBehaviour) + { + mUIEntity?.Close(); + } + } + +#endregion + +#region 编辑器Debug + +#if UNITY_EDITOR && ODIN_INSPECTOR + + + [Button("热重载")] + public void HotOverload() + { + + } + + +#endif + #endregion + + +#endif + + } + + +#if TinaX_CA_LuaRuntime_Enable + /// + /// 注入LuaBehavior的对象 + /// + [System.Serializable] + public class Injection + { + + public UnityEngine.Object Object; + + public string Name; + } + + /// + /// 注入LuaBehavior的文本 + /// + [System.Serializable] + public class Injection_String + { + + public string str; + + public string Name; + } + +#endif +} + + + diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs.meta b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs.meta new file mode 100644 index 0000000..9c5b555 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 015f2fe049e3bf54988d11ecc251df89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7b05ea669e433d84b84f1ab982640fb5, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs new file mode 100644 index 0000000..ab729ed --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs @@ -0,0 +1,111 @@ +#if TinaX_CA_LuaRuntime_Enable + +using System; +using UnityEngine; +#if UNITY_EDITOR && ODIN_INSPECTOR +using UnityEditor; +using Sirenix.OdinInspector; +using Sirenix.OdinInspector.Editor; +#endif + +#if UNITY_EDITOR && ODIN_INSPECTOR + +namespace TinaX.Lua +{ + public class LuaBehaviourBindEditor : OdinEditorWindow + { + + [TabGroup("对象注入绑定")] + [TableList] + [Title("对象注入绑定")] + [OnValueChanged("OnInjectionChanged",true)] + public Injection[] b_injection; + + [TabGroup("文本注入绑定")] + [TableList] + [Title("文本注入绑定")] + public Injection_String[] b_injection_str; + + private LuaBehaviour mTarget; + + protected override void OnEnable() + { + base.OnEnable(); + this.titleContent = new GUIContent("注入绑定编辑器"); + mTarget = Selection.activeGameObject.GetComponent(); + if (mTarget == null) + { + EditorUtility.DisplayDialog("Error", "编辑器初始化失败", "好"); + return; + } + this.UseScrollView = true; + b_injection = mTarget.Injections; + b_injection_str = mTarget.Injections_str; + + } + + protected override void OnDestroy() + { + base.OnDestroy(); + if (mTarget != null) + { + mTarget.Injections = b_injection; + mTarget.Injections_str = b_injection_str; + + EditorUtility.SetDirty(mTarget.gameObject); + EditorUtility.SetDirty(mTarget); + + + } + + } + + private void OnInjectionChanged() + { + foreach(var item in b_injection) + { + if (item.Object != null && string.IsNullOrEmpty(item.Name)) + { + //Debug.Log("新拖上来一个东西:" + item.Object.name + " | " + item.Object.GetType().Name); + var typeName = item.Object.GetType().Name; + var objectName = item.Object.name; + + switch (typeName) + { + default: + item.Name = objectName; + break; + case "GameObject": + item.Name = "go_" + objectName; + break; + case "Text": + item.Name = "txt_" + objectName; + break; + case "XText": + item.Name = "txt_" + objectName; + break; + case "Image": + item.Name = "img_" + objectName; + break; + case "XImage": + item.Name = "img_" + objectName; + break; + case "Button": + item.Name = "btn_" + objectName; + break; + case "XButton": + item.Name = "btn_" + objectName; + break; + } + } + } + } + + + } +} + +#endif + + +#endif \ No newline at end of file diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs.meta b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs.meta new file mode 100644 index 0000000..8f5e925 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaBehaviourBindEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ae4f1f340aabe543a736980647314a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaCat.cs b/Assets/TinaX/Core/System/Lua/Script/LuaCat.cs new file mode 100644 index 0000000..2c8fd2d --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaCat.cs @@ -0,0 +1,41 @@ +#if TinaX_CA_LuaRuntime_Enable + +using TinaX.Lua; +using CatLib; + +namespace TinaX +{ + + + + public class LuaScript : Facade + { + public static ILuaMgr I + { + get + { + return Instance; + } + } + } + +} + +namespace TinaX.Cat +{ + public class LuaProvide : IServiceProvider + { + public void Init() + { + + } + + public void Register() + { + App.Singleton().Alias(); + } + } +} + + +#endif \ No newline at end of file diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaCat.cs.meta b/Assets/TinaX/Core/System/Lua/Script/LuaCat.cs.meta new file mode 100644 index 0000000..6e2b20d --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaCat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9fc2234e4e79107418f720bc7db6f7b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaManager.cs b/Assets/TinaX/Core/System/Lua/Script/LuaManager.cs new file mode 100644 index 0000000..21ee685 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaManager.cs @@ -0,0 +1,261 @@ +#if TinaX_CA_LuaRuntime_Enable + +using System.Collections; +using System; +using System.Collections.Generic; +using UnityEngine; +using TinaX; +using XLua; + +namespace TinaX.Lua +{ + public class LuaManager:ILuaMgr + { + public static LuaEnv LuaVM + { + get + { + return m_LuaVM; + } + } + public static bool Inited + { + get;private set; + } + + + #region rumtime + private static LuaEnv m_LuaVM; + + private static float lastGCTime = 0; + private const float GCInterval = 1; //1 second + private string mFileExt; //文件后缀名 + private string mTinaXFileExt = ".lua.txt"; //在TinaX内部的Lua文件的后缀名 + private string mTinaXFileRootPath; //在TinaX内部的Lua文件的根目录 + + private LuaEnv.CustomLoader m_loader; + + private LuaConfig mLuaConfig; + + /// + /// 是否启用了Lua + /// + private bool EnableLua + { + get + { + if(mLuaConfig == null) + { + return false; + } + return mLuaConfig.EnableLua; + } + } + + #endregion + + public LuaManager() + { + //先获取配置,检查是否启用Lua + mLuaConfig = Config.GetTinaXConfig(Conf.ConfigPath.lua); + mTinaXFileRootPath = Setup.Framework_Path + "/Lua/"; + if (EnableLua) + { + //获取lua文件的后缀名 + switch (mLuaConfig.FileExten) + { + default: + mFileExt = ".txt"; + break; + case LuaFileExten.lua: + mFileExt = ".lua"; + break; + case LuaFileExten.lua_txt: + mFileExt = ".lua.txt"; + break; + case LuaFileExten.txt: + mFileExt = ".txt"; + break; + } + m_LuaVM = new LuaEnv(); + m_loader = LoadLuaCodeFile; + m_LuaVM.AddLoader(m_loader); + TimeMachine.I.AddUpdate(XUpdate); + + m_LuaVM.DoString(@"require('" + Setup.Framework_Path + "/Lua/core/init" + "')", "init"); + + Inited = true; + } + + + + + + } + + public void Start() + { + + } + + public LuaConfig GetConfig() + { + return mLuaConfig; + } + + public void RunFile(string _path) + { + + var file_path = _path; + //这里的RunFile负责把path的后缀扒干净了,包括".lua.txt"这种两个点的后缀,后缀的添加规则在加载文件的地方,这里不管 + while (file_path.IndexOf('.') >= 0) + { + //包含后缀名 + file_path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(file_path), System.IO.Path.GetFileNameWithoutExtension(file_path)); + } + //为什么这里不用正则呢,因为实测发现效率有点低 + + + file_path = file_path.Replace("\\", "/"); + //m_LuaVM.DoString(@"require('" + file_path + "')", System.IO.Path.GetFileNameWithoutExtension(_path)); + m_LuaVM.DoString(@"require('" + file_path + "')"); //这里好像不应该加路径 + + } + + + /// + /// 运行Lua function + /// + /// Global下的Lua function 的Path + public void RunLuaFunc(string FuncPath) + { + Action func = LuaVM.Global.GetInPath(FuncPath); + if(func != null) + { + func(); + } + } + + public R RunLuaFuncR(string FuncPath) + { + Func func = LuaVM.Global.GetInPath>(FuncPath); + if (func != null) + { + return func(); + } + else + { + return default(R); + } + } + + public void RunLuaFunc(string FuncPath,T Param1) + { + Action func = LuaVM.Global.GetInPath>(FuncPath); + if(func != null) + { + func(Param1); + } + } + + public R RunLuaFuncR(string FuncPath, T Param1) + { + Func func = LuaVM.Global.GetInPath>(FuncPath); + if(func != null) + { + return func(Param1); + } + else + { + return default(R); + } + } + + + + + private void XUpdate() + { + if (Time.time - lastGCTime > GCInterval) + { + m_LuaVM.Tick(); + lastGCTime = Time.time; + } + } + + + + private byte[] LoadLuaCodeFile(ref string fileName) + { + if(fileName.IndexOf('.') != -1) + { + fileName = fileName.Replace('.','/'); + } + if (fileName.StartsWith(mTinaXFileRootPath)) + { + //TinaX内部文件 + fileName = fileName + mTinaXFileExt; + } + else + { + fileName = fileName + mFileExt; + } + + +//#if UNITY_EDITOR +// //编辑器下特殊加载处理 + +// //编辑器下尝试加载LuaIDE - LuaDebug调试文件 +// if (fileName == "LuaDebug.txt") +// { +// var luadebug_filepath = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), fileName); +// //检查文件是否存在 +// if (System.IO.File.Exists(luadebug_filepath)) +// { +// var luadebug_file = System.IO.File.ReadAllBytes(luadebug_filepath); +// return luadebug_file; +// } +// else +// { +// return null; +// } +// } + +//#endif + + var codeText = AssetsMgr.Instance.LoadAsset(fileName); + if (codeText == null) + { + XLog.PrintE("[TinaX][LuaManager]File Not Found :" + fileName); + return null; + } + else + { + return codeText.bytes; + } + + } + + + + } + + /// + /// Lua脚本文件的后缀名 + /// + [System.Serializable] + public enum LuaFileExten + { + [Header(".txt")] + txt, + [Header(".lua.txt")] + lua_txt, + [Header(".lua (不推荐)")] + lua + + } +} + + + +#endif \ No newline at end of file diff --git a/Assets/TinaX/Core/System/Lua/Script/LuaManager.cs.meta b/Assets/TinaX/Core/System/Lua/Script/LuaManager.cs.meta new file mode 100644 index 0000000..a48c7c4 --- /dev/null +++ b/Assets/TinaX/Core/System/Lua/Script/LuaManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7359b4a5763b3504f9c2955de013c629 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Scene.meta b/Assets/TinaX/Core/System/Scene.meta new file mode 100644 index 0000000..3f9afd9 --- /dev/null +++ b/Assets/TinaX/Core/System/Scene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a622f3ba1e2128248972faf27c382efa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Scene/ISceneManager.cs b/Assets/TinaX/Core/System/Scene/ISceneManager.cs new file mode 100644 index 0000000..3f6d6cb --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/ISceneManager.cs @@ -0,0 +1,84 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +namespace TinaX +{ + /// + /// 场景管理器接口 | TinaX scene manager interface + /// + public interface ISceneManager + { + /// + /// 打开场景 | Open scene + /// + /// 场景名 | Scene Name + /// + ISceneManager OpenScene(string scene_name); + + /// + /// 获取当前场景名称 | Get current active scene name + /// + /// 场景名 | scene name + string GetActiveSceneName(); + + /// + /// 获取上一个场景名,如果不存在,返回"string.Empty" | Get the last scene's name (load with TinaX scene mgr), if not exist, will return "string.Empty" + /// + /// 上一个场景名,如果不存在,返回string.Empty | scene name or "string.Empty" + string GetLastSceneName(); + + /// + /// 打开场景[异步 回调] | Open Scene [async with callback] + /// + /// + /// + void OpenSceneAsync(string scene_name, Action OnFinishCallback); + + /// + /// 打开场景[异步] | Open Scene [async with callback] + /// + /// + /// 允许在场景准备就绪后立即激活场景。|Allow Scenes to be activated as soon as it is ready. + /// + void OpenSceneAsync(string scene_name, bool allowSceneActivation, Action OnFinishCallback = null); + + + /// + /// 打开场景[异步] | Open Scene [async with callback] + /// + /// 场景名 | scene name + /// 加载进度回调 | callback for loading progress + /// 加载完成回调 | callbcak on loading finish + void OpenSceneAsync(string scene_name, Action OnProgressCallback, Action OnFinishCallback = null); + + /// + /// 打开场景[异步] | Open Scene [async with callback] + /// + /// 场景名 | scene name + /// 允许在场景准备就绪后立即激活场景。|Allow Scenes to be activated as soon as it is ready. + /// 加载进度回调 | callback for loading progress + /// 加载完成回调 | callbcak on loading finish + void OpenSceneAsync(string scene_name, bool allowSceneActivation, Action OnProgressCallback, Action OnFinishCallback = null); + + /// + /// 打开场景[异步] | Open Scene [async with callback] + /// + /// 场景名 | scene name + /// 加载模式 | laodmode + /// 允许在场景准备就绪后立即激活场景。|Allow Scenes to be activated as soon as it is ready. + /// 加载进度回调 | callback for loading progress + /// 加载完成回调 | callbcak on loading finish + void OpenSceneAsync(string scene_name, UnityEngine.SceneManagement.LoadSceneMode loadSceneMode, bool allowSceneActivation = true, Action OnProgressCallback = null, Action OnFinishCallback = null); + + + /// + /// 打开场景[异步 async/await] Open scene [async with "async/await"] + /// + /// + //void OpenSceneAsync(string scene_name); + + } +} + diff --git a/Assets/TinaX/Core/System/Scene/ISceneManager.cs.meta b/Assets/TinaX/Core/System/Scene/ISceneManager.cs.meta new file mode 100644 index 0000000..3e6fb7f --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/ISceneManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d540f3facb3d29d4e907b466699fef1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Scene/SceneMgr.cs b/Assets/TinaX/Core/System/Scene/SceneMgr.cs new file mode 100644 index 0000000..1b6eda6 --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/SceneMgr.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using CatLib; + +namespace TinaX +{ + public sealed class SceneMgr : Facade + { + public static ISceneManager I + { + get + { + return SceneMgr.Instance; + } + } + } + +} diff --git a/Assets/TinaX/Core/System/Scene/SceneMgr.cs.meta b/Assets/TinaX/Core/System/Scene/SceneMgr.cs.meta new file mode 100644 index 0000000..1582af2 --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/SceneMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8f0f08702e46b8469d46b4e00e0b9ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Scene/SceneProvide.cs b/Assets/TinaX/Core/System/Scene/SceneProvide.cs new file mode 100644 index 0000000..4a59af9 --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/SceneProvide.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using CatLib; + +namespace TinaX +{ + +} + +namespace TinaX.Cat +{ + public sealed class SceneProvide : IServiceProvider + { + public void Init() + { + + } + + public void Register() + { + App.Singleton().Alias(); + } + } +} + diff --git a/Assets/TinaX/Core/System/Scene/SceneProvide.cs.meta b/Assets/TinaX/Core/System/Scene/SceneProvide.cs.meta new file mode 100644 index 0000000..5c1b58c --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/SceneProvide.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aad116b8287fe404fa574894772d5431 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Scene/XSceneManager.cs b/Assets/TinaX/Core/System/Scene/XSceneManager.cs new file mode 100644 index 0000000..730f0c4 --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/XSceneManager.cs @@ -0,0 +1,396 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; +using UniRx; +using UniRx.Async; +using System; +//using System.Linq; //好像听说有的平台不兼容LINQ,但记不清具体怎么回事了,那反正就先不用吧 + + +namespace TinaX +{ + public class XSceneManager : ISceneManager + { + #region runtime + //----Active Scene + + private List mSceneChangedPool = new List(); + + /// + /// 异步加载计划 记录 + /// + private List mAsyncLoadPlanPool = new List(); + + + #endregion + + //构造函数 + public XSceneManager() + { + //登记委托 + SceneManager.activeSceneChanged += OnActiveSceneChanged; + } + + //析构函数 + ~XSceneManager() + { + //取消委托 + SceneManager.activeSceneChanged -= OnActiveSceneChanged; + } + + //获取当前活动场景名 + public string GetActiveSceneName() + { + return UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; + } + + //获取上一个场景名 + public string GetLastSceneName() + { + var last_index = mSceneChangedPool.Count - 1; + if (last_index < 0) + { + return string.Empty; + } + else + { + return mSceneChangedPool[last_index].SceneName; + } + } + + + //打开场景 + public ISceneManager OpenScene(string scene_name) + { + UnityEngine.SceneManagement.SceneManager.LoadScene(scene_name); + return this; + } + + + // public void OpenSceneAsync(string scene_name, Action OnFinishCallback) + // { + //#pragma warning disable 4014 + // OpenSceneAsyncWithCallback(scene_name, OnFinishCallback); + //#pragma warning restore 4014 + + // } + + #region public 一堆异步加载的方法 + + public void OpenSceneAsync(string scene_name, Action OnFinishCallback = null) + { + OpenSceneAsyncWithRxCoroutine(scene_name: scene_name, onFinishCallback: OnFinishCallback); + } + + public void OpenSceneAsync(string scene_name, bool allowSceneActivation, Action OnFinishCallback = null) + { + OpenSceneAsyncWithRxCoroutine(scene_name: scene_name, onFinishCallback: OnFinishCallback,allowSceneActivation:allowSceneActivation); + + } + + public void OpenSceneAsync(string scene_name, Action OnProgressCallback, Action OnFinishCallback = null) + { + OpenSceneAsyncWithRxCoroutine(scene_name: scene_name, onFinishCallback: OnFinishCallback, onProgressCallback: OnProgressCallback); + } + + public void OpenSceneAsync(string scene_name, bool allowSceneActivation, Action OnProgressCallback, Action OnFinishCallback = null) + { + OpenSceneAsyncWithRxCoroutine(scene_name: scene_name, onFinishCallback: OnFinishCallback, onProgressCallback: OnProgressCallback, allowSceneActivation: allowSceneActivation); + } + + public void OpenSceneAsync(string scene_name, LoadSceneMode loadSceneMode, bool allowSceneActivation = true, Action OnProgressCallback = null, Action OnFinishCallback = null) + { + OpenSceneAsyncWithRxCoroutine(scene_name: scene_name, onFinishCallback: OnFinishCallback, onProgressCallback: OnProgressCallback, allowSceneActivation: allowSceneActivation,loadSceneMode: loadSceneMode); + } + + + #endregion + + //public async void OpenSceneAsync(string scene_name) + //{ + // await SceneManager.LoadSceneAsync(scene_name); + //} + + + //活动场景切换事件 + private void OnActiveSceneChanged(Scene cur_scene,Scene new_scene) + { + //登记场景切换 + mSceneChangedPool.Add(new S_Scene_Load_Info() { + SceneName = new_scene.name + }); + //发送事件 + CatLib.App.Trigger(EventDefine.X_OnSceneChanged,cur_scene,new_scene); + + } + + + //private async UniTask OpenSceneAsyncWithCallback(string scene_name, Action finishCallback, LoadSceneMode loadSceneMode = LoadSceneMode.Single) + //{ + // await SceneManager.LoadSceneAsync(scene_name, loadSceneMode); + // if (finishCallback != null) + // { + // finishCallback(); + // } + //} + + + /// + /// + /// + /// 场景名 + /// 加载模式 + /// 允许在场景准备就绪后立即激活场景。 + /// 加载结束回调 + /// 加载过程进度回调 + private void OpenSceneAsyncWithRxCoroutine(string scene_name, + LoadSceneMode loadSceneMode = LoadSceneMode.Single, + bool allowSceneActivation = true, + Action onFinishCallback= null, + Action onProgressCallback = null) + { + //判断是否已经在加载 + var flag = false; + + for (int i= 0; i < mAsyncLoadPlanPool.Count; i++) + { + if (mAsyncLoadPlanPool[i].sceneName == scene_name) + { + flag = true; + //欸呀呀,已经正在加载它了呀w(゚Д゚)w + if (onFinishCallback != null) { mAsyncLoadPlanPool[i].AddFinishCallback(onFinishCallback); } //以callback之名起誓:等它加载好了顺便告诉我一声哦 + if (onProgressCallback != null) { mAsyncLoadPlanPool[i].AddLoadProgressCallback(onProgressCallback); } //ね ね , 顺便把加载进度告诉我呗 + + + break; + } + } + + + if (!flag) + { + //创建一个计划 + var loadPlan = new SceneLoadAsyncPlan( + _scene_name: scene_name, + _loadSceneMode: loadSceneMode, + _allowSceneActivation: allowSceneActivation, + _onFinishCallback: onFinishCallback, + _onProgressCallback: onProgressCallback + ); + //把计划加入到pool + if (!mAsyncLoadPlanPool.Contains(loadPlan)) + { + mAsyncLoadPlanPool.Add(loadPlan); + } + //启动一个协程去加载它呀 + MainThreadDispatcher.StartUpdateMicroCoroutine(LoadSceneAsyncCoroutine(loadPlan)); + } + + + } + + private IEnumerator LoadSceneAsyncCoroutine(SceneLoadAsyncPlan loadPlan) + { + var asyncOperation = SceneManager.LoadSceneAsync(loadPlan.sceneName, loadPlan.loadSceneMode); + loadPlan.LoadStart(asyncOperation); //更新状态 + asyncOperation.allowSceneActivation = loadPlan.allowSceneActivation; + while (!asyncOperation.isDone) + { + loadPlan.InvokeProgress(asyncOperation.progress); + if (!loadPlan.allowSceneActivation && asyncOperation.progress>= 0.9f) + { + //这时候异步加载的工作已经完成了(虽然还没加载完),要把OnFinish回调出去 + loadPlan.InvokeFinishIfNotActivation(); + } + yield return null; + } + + if (asyncOperation.isDone) + { + loadPlan.InvokeFinishOnTrueDone(); + //从计划列表中拿掉自己 + if (mAsyncLoadPlanPool.Contains(loadPlan)) + { + mAsyncLoadPlanPool.Remove(loadPlan); + } + + yield break; + } + } + + + + /* + * 关于allowSceneActivation,叨叨两句: + * allowSceneActivation这个是Unity里面一个奇妙的东西。 + * 它的设定是这样的,如果allowSceneActivation = true, 那么这个场景异步加载完成之后会自动切到这个场景。 + * 如果allowSceneActivation = false的话,坑来了啊,它不会加载完。对,我也是第一次看到这么奇葩的设定 + * 如果allowSceneActivation = false的话,Unity会在异步加载到90%左右停住,直到你把allowSceneActivation设为true之后, + * 它继续加载完,然后自动切过去。 + * + * 由于这个设定的存在,在TinaX的场景异步加载策略是这个设定的: + * 如果allowSceneActivation 为 true的话,没什么特别的,加载完成之后触发OnFinishCallback回调。 + * 如果allowSceneActivation 为 false的话,就不一样了,首先在异步加载到90%以上时,加载会停住嘛,这时候会触发OnFinishCallback, + * 等场景正式加载完之后会触发第二次OnFinishCallback + * 当开发者在收到OnFinishCallback之后,会接收一个“SceneLoadAsyncPlan”类型的参数,在这个参数里,有这么几个东西可以用: + * 1. SceneLoadAsyncPlan.isNotActivationCallback bool + * 这个属性为true的时候,说明这是加载到90%停住的这时候的第一次Callback, + * 其他任何情况获取到它都是false + * + * 2. SceneLoadAsyncPlan.isDone, bool + * 检查时候加载完的属性,如果是加载90%停住的时候,值是false + * + * 好了,现在我们能在代码里区分两次callback了,那么在第一次callback之后,不是停住了嘛,我要怎么继续让它加载嘞, + * 方法是:在callback接收的SceneLoadAsyncPlan类型参数中,调用“SceneLoadAsyncPlan.ContinueLoad”方法,它就会继续执行了。 + * + * lua那边封装了一层默认值,具体调用方法和C#差不多,具体怎么用翻文档吧(文档写好之前可以看看注释,在scene.lua.txt (XCore.Scene)这个位置 + * 目前SceneLoadAsyncPlan类中暴露了挺多东西的,可能对强迫症用户不太友好(至少本强迫症看着很别扭),以后看看考虑封装个interface给强迫症们调用 + * 顺便:在加载完之前,包括停在90%的时候,负责这个场景的加载任务的协程和加载记录会一直保持着。 + * (虽然这里的协程是用UniRx驱动的,没有Unity原生协程开销那么大就是了 + * + */ + + } + + public struct S_Scene_Load_Info + { + public string SceneName; + } + + + /// + /// 场景异步加载计划 + /// + public struct SceneLoadAsyncPlan + { + /// + /// SceneName + /// + public string sceneName { get; private set; } + public Action onProgressCallback { get; private set; } + public Action onFinishCallback { get; private set; } + public bool allowSceneActivation { get; private set; } + public LoadSceneMode loadSceneMode { get; private set; } + + private AsyncOperation mAO; + private int tag_invoke_if_not_activation; //0: 默认状态 1:调用出去了一次 + + /// + /// 是否是“准备就绪后不自动激活”状态下的“准备就绪”这个部分的回调 + /// + public bool isNotActivationCallback + { + get + { + if (allowSceneActivation) + { + return false; + } + else + { + return !mAO.isDone; + } + } + } + + public bool isDone + { + get + { + return mAO.isDone; + } + } + + + public SceneLoadAsyncPlan( + string _scene_name, + LoadSceneMode _loadSceneMode, + Action _onProgressCallback, + Action _onFinishCallback, + bool _allowSceneActivation) + { + sceneName = _scene_name; + onProgressCallback = _onProgressCallback; + onFinishCallback = _onFinishCallback; + allowSceneActivation = _allowSceneActivation; + loadSceneMode = _loadSceneMode; + mAO = null; + tag_invoke_if_not_activation = 0; + } + + public void LoadStart(AsyncOperation _asyncOperation) + { + mAO = _asyncOperation; + } + + /// + /// 继续加载, 用于allowSceneActivation = false 的情况 + /// + public void ContinueLoad() + { + if (!allowSceneActivation) + { + mAO.allowSceneActivation = true; + } + } + + + /// + /// 内部使用,不要调用 | private func , don't invok it !! + /// + /// + public void AddFinishCallback(Action callback) + { + if(callback != null) + { + onFinishCallback += callback; + } + } + + /// + /// 内部使用,不要调用 | private func , don't invok it !! + /// + /// + public void AddLoadProgressCallback(Action callback) + { + if(callback != null) + { + onProgressCallback += callback; + } + } + + /// + /// 内部使用,不要调用 | private func , don't invok it !! + /// + /// + public void InvokeProgress(float value) + { + onProgressCallback?.Invoke(value); + } + + + /// + /// 内部使用,不要调用 | private func , don't invok it !! + /// + public void InvokeFinishIfNotActivation() //在“不要在场景准备完成后立即激活场景”的状态下,Invoke一次 + { + if(tag_invoke_if_not_activation == 0 && !allowSceneActivation) + { + tag_invoke_if_not_activation = 1; + onFinishCallback?.Invoke(this); + } + } + + /// + /// 内部使用,不要调用 | private func , don't invok it !! + /// + public void InvokeFinishOnTrueDone() //真的加载结束了 + { + onFinishCallback?.Invoke(this); + } + + } + +} + diff --git a/Assets/TinaX/Core/System/Scene/XSceneManager.cs.meta b/Assets/TinaX/Core/System/Scene/XSceneManager.cs.meta new file mode 100644 index 0000000..9f40768 --- /dev/null +++ b/Assets/TinaX/Core/System/Scene/XSceneManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e44e57d266c754846a461a57e4d19fd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/ServiceRegister.cs b/Assets/TinaX/Core/System/ServiceRegister.cs new file mode 100644 index 0000000..1b78162 --- /dev/null +++ b/Assets/TinaX/Core/System/ServiceRegister.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using CatLib; +using TinaX.Cat; + +namespace TinaX +{ + /// + /// 框架层服务注册 + /// + internal class ServiceRegister + { + public static IServiceProvider[] Framework_Service_Reg + { + get + { + return new IServiceProvider[] + { + new SceneProvide(), + //new LogProvide(), + new AssetProvide(), + new UIProvide(), + new I18NProvide(), + new TimeMachineProvide(), +#if TinaX_CA_LuaRuntime_Enable + new LuaProvide(), +#endif + new XSoundProvide(), + //new XDebugProvide(), + }; + } + } + } +} + diff --git a/Assets/TinaX/Core/System/ServiceRegister.cs.meta b/Assets/TinaX/Core/System/ServiceRegister.cs.meta new file mode 100644 index 0000000..29083dc --- /dev/null +++ b/Assets/TinaX/Core/System/ServiceRegister.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 058642ab9075a1549b15d76d06523495 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound.meta b/Assets/TinaX/Core/System/Sound.meta new file mode 100644 index 0000000..e0e5512 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 113e8e55262a6c646a92628418a32de5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Const.meta b/Assets/TinaX/Core/System/Sound/Const.meta new file mode 100644 index 0000000..9dd2acc --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Const.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d9f0890bef2b514dbcf5bf1cb552ceb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs b/Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs new file mode 100644 index 0000000..890accc --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs @@ -0,0 +1,9 @@ + + +namespace TinaX.Sound +{ + public static class XSoundConst + { + public const string Sound_Base_GameObject = "XSound"; + } +} diff --git a/Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs.meta b/Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs.meta new file mode 100644 index 0000000..9923fcc --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Const/XSoundConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 86948181752ada644a72b3229b9044be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Nodes.meta b/Assets/TinaX/Core/System/Sound/Nodes.meta new file mode 100644 index 0000000..965f6d8 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52b4ca5aa0e61b34881ba09b021c5060 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Nodes/Editor.meta b/Assets/TinaX/Core/System/Sound/Nodes/Editor.meta new file mode 100644 index 0000000..17ef0ea --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91e1af5aa647aef439749573f5de38ce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs b/Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs new file mode 100644 index 0000000..1e16c52 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XNode; +using XNodeEditor; +using UnityEditor; +using TinaX.BluePrint.Sound; +using System; + +namespace TinaXEditor.BluePrint.Sound +{ + [CustomNodeGraphEditor(typeof(SmartClip), "TinaX.BP.Sound.Settings")] + public class SoundClipResNodeEdit : NodeGraphEditor + { + private bool Inited = false; + private SmartClip mTarget; + private GUIStyle mDefaultStype; + + public override void OnGUI() + { + base.OnGUI(); + if (!Inited) + { + Inited = true; + GUILayout.Label("初始化中"); + + + mTarget = (SmartClip)target; + mDefaultStype = new GUIStyle(); + mDefaultStype.fontSize = 16; + mDefaultStype.normal.textColor = new Color(1f, 1f, 1f, 0.6f); + mDefaultStype.margin.left = 10; + mDefaultStype.margin.top = 10; + mDefaultStype.richText = false; + + + + + //检查是否已存在 + //var flag = false; + //foreach (var item in mTarget.nodes) + //{ + // if (item.name == "Sound Clip Res Node" || item.name == "XSound Clip Config") + // { + // flag = true; + // } + //} + //if (!flag) + //{ + // base.CreateNode(typeof(SoundClipResNode),Vector2.zero); + //} + } + else + { + + GUILayout.Label("蓝图-音频切片", mDefaultStype); + } + } + + + + + + } +} + diff --git a/Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs.meta b/Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs.meta new file mode 100644 index 0000000..08d89ec --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/Editor/SoundClipGraphEdit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a64f648c19cc1ba4bbf42d785fc98c26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs new file mode 100644 index 0000000..5476a99 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XNode; + +namespace TinaX.BluePrint.Sound +{ + [CreateAssetMenu(menuName = "TinaX/音频/智能切片",fileName = "XSoundClip")] + public class SmartClip : NodeGraph + { + + + private void OnEnable() + { + name = "音频智能对象"; + } + } + +} diff --git a/Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs.meta b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs.meta new file mode 100644 index 0000000..6c0c838 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipGraph.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc57d632d8891874db994c6fedba3ec4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs new file mode 100644 index 0000000..46d0556 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XNode; + +namespace TinaX.BluePrint.Sound +{ + /// + /// XSound音频切片-资源节点 + /// + [CreateNodeMenu("Tina X/Sound/Main")] + public class SoundClipResNode:Node + { + [Input] public AudioClip clip; + [Input] public bool Loop; + //[Input] public System.Type Effector; + + protected override void Init() + { + base.Init(); + name = "XSound Clip Config"; + } + } +} + diff --git a/Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs.meta b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs.meta new file mode 100644 index 0000000..c191a57 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/SoundClipResNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46791dd752a1cee41b090e6230da537a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs b/Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs new file mode 100644 index 0000000..06ed936 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs @@ -0,0 +1,128 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XNode; + +namespace TinaX.BluePrint.Sound +{ + + + #region Clips + + + /// + /// 随机 + /// + [CreateNodeMenu("Tina X/Sound/Clip/随机")] + public class RandomClip : Node + { + [Header("输入Clips")] + [Input] public AudioClip[] clips; + + [Output] public AudioClip result; + + protected override void Init() + { + base.Init(); + name = "Random"; + } + + public override object GetValue(NodePort port) + { + if (port.fieldName == "result") + { + var _clips = GetInputValue("clips", this.clips); + if (_clips.Length <= 0) { return null; } + return _clips[UnityEngine.Random.Range(0, _clips.Length - 1)]; + } + return null; + } + } + + /// + /// 音频切片列表 + /// + [CreateNodeMenu("Tina X/Sound/Clip/List")] + public class ClipsList : Node + { + [Input] public AudioClip[] clips; + [Input] public int outIndex=0; + + [Output] public AudioClip result; + [Output] public int maxIndex; + + protected override void Init() + { + base.Init(); + name = "Clip List"; + } + + public override object GetValue(NodePort port) + { + var _clips = GetInputValue("clips", this.clips); + if (port.fieldName == "result") + { + + var _index = GetInputValue("outIndex", this.outIndex); + if (_clips.Length <= 0) { return null; } + if(_clips.Length < _index) + { + return _clips[_clips.Length - 1]; + } + else + { + return _clips[_index]; + } + + } + + if (port.fieldName == "maxIndex") + { + + return _clips.Length - 1; + + } + return null; + } + } + + #endregion + + + #region Math + /// + /// 音频切片列表 + /// + [CreateNodeMenu("Tina X/Sound/Math/Random (int)")] + public class GetRandomInt : Node + { + [Header("输入Clips")] + [Input] public int start; + [Input] public int end; + + [Output] public int value; + + protected override void Init() + { + base.Init(); + name = "Int Random"; + } + + public override object GetValue(NodePort port) + { + if (port.fieldName == "value") + { + return UnityEngine.Random.Range(start, end); + } + return null; + } + } + + + + #endregion + + + + +} diff --git a/Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs.meta b/Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs.meta new file mode 100644 index 0000000..05db834 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Nodes/SoundCommonNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9829c26489335ae4b942af6de4e43397 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Script.meta b/Assets/TinaX/Core/System/Sound/Script.meta new file mode 100644 index 0000000..323c0cc --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3f18f94354d4af42a71a38be728532c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs b/Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs new file mode 100644 index 0000000..c4fa4ac --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs @@ -0,0 +1,95 @@ +using System; +using static TinaX.Sound.SoundTrack; + +namespace TinaX.Sound +{ + /// + /// 音轨 用户接口 + /// + public interface ISoundTrack + { + /// + /// 注册事件:当某个音频切片播放结束(单切片循环播放时不会触发) + /// + /// 事件回调,接收参数1:本次播放结束的切片名,接收参数2:即将播放的切片名,可能为空 + /// 事件注册句柄ID + int Register_OnClipPlayEnd(Action callback); + + /// + /// 取消注册事件:当某个音频切片播放结束 + /// + /// 注册事件时得到的ID + void Remove_OnClipPlayEnd(int id); + + /// + /// 注册事件:当音频列表播放结束(仅在列表播放不循环的模式下有效) + /// + /// + /// + int Register_OnListPlayEnd(Action callback); + + /// + /// 取消注册事件:当音频列表播放结束 + /// + /// + void Remove_OnListPlayEnd(int id); + + /// + /// 添加普通音频片段 + /// + /// AudioClip对象 + /// 片段名称 + /// + ISoundTrack AddSoundClip(UnityEngine.AudioClip clip, string name); + + /// + /// 移除音频切片 + /// + /// + /// + ISoundTrack RemoveSoundClip(string name); + + /// + /// 音频片段是否存在 + /// + /// 音频片段名 + /// + bool IsSoundClipExist(string name); + + /// + /// 通过Index设置播放模式 + /// + /// 播放模式ID: 1.单片段播放 2.单片段循环 3.列表播放 4.列表循环 + /// + ISoundTrack SetPlayModeById(int modeId); + + + /// + /// 设置播放模式 + /// + /// 播放模式 + /// + ISoundTrack SetPlayMode(E_PlayMode playMode); + + /// + /// 添加到播放队列 + /// + /// + /// + ISoundTrack AddToPlayList(string name); + + + /// + /// 播放! + /// + /// + ISoundTrack Play(); + + /// + /// 播放指定音频片段 + /// + /// ClipName + /// + ISoundTrack Play(string name); + } +} diff --git a/Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs.meta b/Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs.meta new file mode 100644 index 0000000..3108f9c --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/ISoundTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aea4345bd10eeb240a2371475eadd1cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Script/IXSound.cs b/Assets/TinaX/Core/System/Sound/Script/IXSound.cs new file mode 100644 index 0000000..dc8838b --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/IXSound.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TinaX.Sound +{ + /// + /// 音频管理器接口 + /// + public interface IXSound + { + /// + /// 创建音轨,如已存在则返回已存在音轨 + /// + /// 音轨名 + /// 音轨对象 + ISoundTrack CreateSoundTrack(string name); + + + /// + /// 音轨是否已存在 + /// + /// 音轨名 + /// + bool IsSoundTrackExist(string name); + + /// + /// 获取音轨 + /// + /// + /// + ISoundTrack GetSoundTrack(string name); + } +} diff --git a/Assets/TinaX/Core/System/Sound/Script/IXSound.cs.meta b/Assets/TinaX/Core/System/Sound/Script/IXSound.cs.meta new file mode 100644 index 0000000..c4165fd --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/IXSound.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 661b005f3ba79a84a9aa1104060bb3b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs b/Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs new file mode 100644 index 0000000..292ac47 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Audio; + +namespace TinaX.Sound +{ + public class SmartAudioClip + { + /// + /// 原始切片 + /// + public AudioClip OriginClip; + + /// + /// 切片名 + /// + public string Name; + } +} diff --git a/Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs.meta b/Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs.meta new file mode 100644 index 0000000..98e6e19 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/SmartAudioClip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77bd32033343dc74393c675d5777d1a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Script/SoundCat.cs b/Assets/TinaX/Core/System/Sound/Script/SoundCat.cs new file mode 100644 index 0000000..0d47e56 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/SoundCat.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using CatLib; +using TinaX.Sound; + +namespace TinaX.Cat +{ + public class XSoundProvide : IServiceProvider + { + public void Init() + { + + } + + public void Register() + { + App.Singleton(); + } + } +} +namespace TinaX +{ + public class XSound : Facade + { + public static IXSound I + { + get + { + return Instance; + } + } + } +} diff --git a/Assets/TinaX/Core/System/Sound/Script/SoundCat.cs.meta b/Assets/TinaX/Core/System/Sound/Script/SoundCat.cs.meta new file mode 100644 index 0000000..16e2515 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/SoundCat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2456f9622211b1b4f8720bfa7d06b970 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs b/Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs new file mode 100644 index 0000000..3e46dde --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs @@ -0,0 +1,449 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Audio; +using TinaX; +using UniRx; + +namespace TinaX.Sound +{ + /// + /// 音轨 + /// + public class SoundTrack : ISoundTrack + { + public SoundTrack(string name, XSoundMgr mgr) + { + mSoundTrackName = name; + mBaseMgr = mgr; + TrackGameObject = mgr.GetRootGameObject().FindOrCreateGo("sTrack_" + name); + MainAudioSource = TrackGameObject.GetComponentOrAdd(); + MainAudioSource.playOnAwake = false; + } + + + private AudioSource MainAudioSource; + private GameObject TrackGameObject; + private string mSoundTrackName; + private XSoundMgr mBaseMgr; + + /// + /// 当前音轨播放模式 + /// + private E_PlayMode mPlayMode = E_PlayMode.single; + /// + /// 当前音轨切换模式 + /// + private E_SwitchMode mSwitchMode = E_SwitchMode.wait; + + /// + /// 当前播放 + /// + private SmartAudioClip mCur_PlayingClip; + + private IDisposable mCurPlayerTimer; + + /// + /// 存储该列表中所有切片的对象池 + /// + private Dictionary mClip_Pool = new Dictionary(); + + /// + /// 播放列表 + /// + private List mPlayList = new List(); + + /// + /// 缓存播放列表 + /// + private List mCachePlayList = new List(); //实际播放顺序是读的这个队列 + + /// + /// 当某个切片播放结束的回调,参数1为播放结束的切片名,参数2为即将播放的切片名,可能为空字符串((单切片循环播放时不会触发)) + /// + private Dictionary> OnClipPlayEnd = new Dictionary>(); //字典,为每个回调注册分配一个ID,字典为ID对Action的对应关系 + + /// + /// 当队列播放结束(单曲循环、单曲播放、队列循环时都不会相应这个Action) + /// + private Dictionary OnListPlayEnd = new Dictionary(); //同上,ID和Action的key/value的存储 + + #region 事件注册相关API + + /// + /// 是否是“某个切片播放结束的回调”的队列中的可用的空闲ID + /// + /// + /// + private bool IsFreeID_ForClipPlayEnd(int id) + { + return OnClipPlayEnd.ContainsKey(id); + } + + /// + /// 获取“某个切片播放结束的回调”的队列中一个可用的空闲ID + /// + /// + private int GetFreeID_ForClipPlayEnd() + { + int id = UnityEngine.Random.Range(99, 999); + while (!IsFreeID_ForClipPlayEnd(id)) + { + id++; + } + return id; + } + + /// + /// 是否是“队列播放完成的回调”的队列中的可用的空闲ID + /// + /// + /// + private bool IsFreeID_ForListPlayEnd(int id) + { + return OnListPlayEnd.ContainsKey(id); + } + + /// + /// 获取“队列播放完成的回调”的队列中一个可用的空闲ID + /// + /// + private int GetFreeID_ForListPlayEnd() + { + int id = UnityEngine.Random.Range(99, 999); + while (!IsFreeID_ForListPlayEnd(id)) + { + id++; + } + return id; + } + + //注册事件:当某个音频切片播放结束(单切片循环播放时不会触发) + public int Register_OnClipPlayEnd(Action callback) + { + var id = GetFreeID_ForClipPlayEnd(); + OnClipPlayEnd.Add(id, callback); + return id; + } + + //注销事件:当某个音频切片播放结束 + public void Remove_OnClipPlayEnd(int id) + { + if (OnClipPlayEnd.ContainsKey(id)) + { + OnClipPlayEnd.Remove(id); + } + } + + //注册事件:当播放列表播放结束 + public int Register_OnListPlayEnd(Action callback) + { + var id = GetFreeID_ForListPlayEnd(); + OnListPlayEnd.Add(id, callback); + return id; + } + + public void Remove_OnListPlayEnd(int id) + { + if (OnListPlayEnd.ContainsKey(id)) + { + OnListPlayEnd.Remove(id); + } + } + + #endregion + + + #region 切片管理API + + /// + /// 添加音频片段 + /// + public ISoundTrack AddSoundClip(UnityEngine.AudioClip clip, string name) + { + if(clip == null) + { + XLog.PrintW("[TinaX] 音轨 " + mSoundTrackName + " 添加音频片段失败:传入的音频片段为空"); + return this; + } + if (!mClip_Pool.ContainsKey(name)) + { + mClip_Pool.Add(name, new SmartAudioClip() { + Name = name, + OriginClip = clip, + }); + } + + return this; + } + + + public ISoundTrack RemoveSoundClip(string name) + { + if (mClip_Pool.ContainsKey(name)) + { + mClip_Pool.Remove(name); + } + return this; + } + + /// + /// 音频片段是否存在 + /// + /// + /// + public bool IsSoundClipExist(string name) + { + return mClip_Pool.ContainsKey(name); + } + + public ISoundTrack SetPlayModeById(int modeId) + { + switch (modeId) + { + default: + return this; + case 1: + return SetPlayMode(E_PlayMode.single); + + case 2: + return SetPlayMode(E_PlayMode.single_loop); + + case 3: + return SetPlayMode(E_PlayMode.list); + + case 4: + return SetPlayMode(E_PlayMode.list_loop); + } + } + + public ISoundTrack SetPlayMode(E_PlayMode playMode) + { + mPlayMode = playMode; + return this; + } + + /// + /// 添加到播放队列 + /// + /// + /// + public ISoundTrack AddToPlayList(string name) + { + if (mClip_Pool.ContainsKey(name)) + { + mPlayList.Add(mClip_Pool[name]); + } + return this; + } + + #endregion + + #region 播放操作 + + /// + /// 播放音轨 + /// + /// + public ISoundTrack Play() + { + //编排CachePlayList + mCachePlayList.Clear(); + if(mPlayList.Count >= 1) + { + mCachePlayList.Add(mPlayList[0]); //默认情况下,只在Cache中存放即将播放的内容 + } + + + //交给私有方法播放 + DoPlay(); + + return this; + } + + /// + /// 播放指定音频片段 + /// + /// + /// + public ISoundTrack Play(string name) + { + //检查name是否存在 + if (!mClip_Pool.ContainsKey(name)) + { + XLog.PrintW("[TinaX] 音轨 :" + mSoundTrackName + " ,播放指定音频片段 " + name + " 不存在"); + return this; + } + //当前是否有正在播放 + if (mCur_PlayingClip != null) + { + //有正在播放内容,看看切换策略吧 + if(mSwitchMode == E_SwitchMode.cover) + { + //结束当前播放并开始下一个 + //Todo 切换特效(淡入淡出 等,以后再写) + + //修改Cache队列 + mCachePlayList.Clear(); + mCachePlayList.Add(mClip_Pool[name]); + DoPlay(); + + + }else if(mSwitchMode == E_SwitchMode.wait) + { + //等待当前播放结束并播放下一个 + //编排进Cache队列之后不管了 + mCachePlayList.Add(mClip_Pool[name]); + } + } + else + { + //直接编排队列 + mCachePlayList.Clear(); + mCachePlayList.Add(mClip_Pool[name]); + DoPlay(); + } + return this; + } + + + #endregion + + + #region Private_音轨操作 + + /// + /// 内部播放方法,编排好CachePlayList之后调用这里 + /// + private void DoPlay() + { + //当前是否有播放 + if (mCur_PlayingClip != null) + { + MainAudioSource.Stop(); + mCur_PlayingClip = null; + if(mCurPlayerTimer != null) + { + mCurPlayerTimer.Dispose(); + mCurPlayerTimer = null; + } + } + if(mCachePlayList.Count <= 0) + { + XLog.PrintW("[TinaX] 音轨 " + mSoundTrackName + " 播放失败:音频缓存队列为空"); + return; + } + mCur_PlayingClip = mCachePlayList[0]; + MainAudioSource.clip = mCur_PlayingClip.OriginClip; + var length = mCur_PlayingClip.OriginClip.length; + //设置计时器 + mCurPlayerTimer = Observable.Timer(TimeSpan.FromSeconds(length)).Subscribe(_=> { + Timer_OnClipPlayEnd(); + }); + + MainAudioSource.Play(); + mCachePlayList.RemoveAt(0); + } + + //某个Clip播放结束的计时器 + private void Timer_OnClipPlayEnd() + { + Debug.Log("播放器:播放Clip计时器触发"); + //某个clip播放结束了,我们看看接下来要干嘛 + //首先看看播放模式 + if (mPlayMode == E_PlayMode.single) + { + //那就播放结束了呗,处理下回调 + foreach(var item in OnClipPlayEnd) + { + item.Value(mCur_PlayingClip.Name,""); + } + //然后,清空当前状态 + mCurPlayerTimer = null; + mCur_PlayingClip = null; + } + if (mPlayMode == E_PlayMode.single_loop) + { + //循环啊,那就再放一遍 + mCachePlayList.Add(mCur_PlayingClip); + DoPlay(); + } + if(mPlayMode == E_PlayMode.list || mPlayMode == E_PlayMode.list_loop) + { + //列表循环,播放下一个,编排Cache + int index = 0; + for(int i = 0; i < mPlayList.Count; i++) + { + if(mPlayList[i].Name == mCur_PlayingClip.Name) + { + index = i; + break; + } + } + index++; + if(index >= mPlayList.Count) + { + index = 0; + if(mPlayMode == E_PlayMode.list) + { + foreach(var item in OnListPlayEnd) + { + item.Value(); + } + } + } + mCachePlayList.Add(mPlayList[index]); + DoPlay(); + + } + + + mCurPlayerTimer = null; + } + + + + #endregion + + + + /// + /// 播放模式 + /// + public enum E_PlayMode + { + /// + /// 播放单个片段 + /// + single, + /// + /// 循环播放单个片段 + /// + single_loop, + /// + /// 播放当前列表 + /// + list, + /// + /// 循环播放当前列表 + /// + list_loop, + } + + /// + /// 音轨中切换音频切片的方式 + /// + public enum E_SwitchMode + { + /// + /// 等待当前音频切片播放完毕后播放下一个 + /// + wait, + /// + /// 如果当前正在播放音频切片,直接结束并播放待切换的切片 + /// + cover, + } + + } +} diff --git a/Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs.meta b/Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs.meta new file mode 100644 index 0000000..7a345ea --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/SoundTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c795e3bc168a442429b90c1503a2b082 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs b/Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs new file mode 100644 index 0000000..46b2f13 --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs @@ -0,0 +1,78 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX.Sound +{ + public class XSoundMgr:IXSound + { + public XSoundMgr() + { + var TinaXRoot = GameObjectHelper.FindOrCreateGo(Setup.Framework_Base_GameObject); + + mXSoundRootGameObject = TinaXRoot.FindOrCreateGo(XSoundConst.Sound_Base_GameObject); + } + + /// + /// XSound根GameObject + /// + private GameObject mXSoundRootGameObject; + + /// + /// 音轨池 + /// + private Dictionary mDict_SoundTrack = new Dictionary(); + + + /// + /// 创建音轨 + /// + /// + /// + public ISoundTrack CreateSoundTrack(string name) + { + if (mDict_SoundTrack.ContainsKey(name)) + { + return mDict_SoundTrack[name]; + } + else + { + var st = new SoundTrack(name,this); + mDict_SoundTrack.Add(name, st); + return st; + } + } + + /// + /// 音轨是否已存在 + /// + /// + /// + public bool IsSoundTrackExist(string name) + { + return mDict_SoundTrack.ContainsKey(name); + } + + public ISoundTrack GetSoundTrack(string name) + { + if (!mDict_SoundTrack.ContainsKey(name)) + { + return null; + } + return mDict_SoundTrack[name]; + } + + + + /// + /// 获取到它的全局GameObject + /// + /// + public GameObject GetRootGameObject() + { + return mXSoundRootGameObject; + } + } +} + + diff --git a/Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs.meta b/Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs.meta new file mode 100644 index 0000000..5ebe3ed --- /dev/null +++ b/Assets/TinaX/Core/System/Sound/Script/XSoundMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf2c0851e73850d459a942f47d0091be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager.meta b/Assets/TinaX/Core/System/TaskManager.meta new file mode 100644 index 0000000..1ae0a28 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0684967e3999bb840b2a3e90e8d731e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager/Cat.meta b/Assets/TinaX/Core/System/TaskManager/Cat.meta new file mode 100644 index 0000000..5889142 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Cat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ae9a9ad21f1ecd459eca6f57c250f5a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs b/Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs new file mode 100644 index 0000000..e259d2b --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs @@ -0,0 +1,33 @@ +using TinaX.Task; +using CatLib; + + +namespace TinaX +{ + public class XTask : Facade + { + public static ITaskManager I + { + get + { + return Instance; + } + } + } +} + +namespace TinaX.Cat +{ + public class TaskProvider : IServiceProvider + { + public void Init() + { + + } + + public void Register() + { + App.Singleton(); + } + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs.meta b/Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs.meta new file mode 100644 index 0000000..67e6c27 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Cat/TaskMgrCat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de7aa22877cb76244a1cc1e72151e30e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager/Interface.meta b/Assets/TinaX/Core/System/TaskManager/Interface.meta new file mode 100644 index 0000000..5207b7e --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Interface.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8215f05ce2940d248afaa616593f8c58 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs b/Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs new file mode 100644 index 0000000..9be04b4 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs @@ -0,0 +1,20 @@ +using UnityEngine; +using System; +using UniRx; + +namespace TinaX.Task +{ + public interface ITaskManager + { + + + + + /// + /// [Unirx]运行一个异步方法(多线程) + /// + /// + /// + void RxRun(Action action, Action RunFinish = null); + } +} diff --git a/Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs.meta b/Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs.meta new file mode 100644 index 0000000..ddbc950 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Interface/ITaskManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 06fd90df105cbd64f93a410a1ba5d680 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager/Script.meta b/Assets/TinaX/Core/System/TaskManager/Script.meta new file mode 100644 index 0000000..117f640 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 26031a579775a6f4aa239a0f6718b583 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs b/Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs new file mode 100644 index 0000000..9601bc0 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; + +namespace TinaX.Task +{ + /// + /// 协程管理器,基于MonoBehaviour,托管Unity原生协程 + /// + public class CoroutineMgr : MonoBehaviour + { + #region 常用的协程对象 + + + #endregion + } +} diff --git a/Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs.meta b/Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs.meta new file mode 100644 index 0000000..4bedd18 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Script/CoroutineMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cd939a3989135c4e923117ee07f2adb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs b/Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs new file mode 100644 index 0000000..fa2b020 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using UniRx; + + +namespace TinaX.Task +{ + /// + /// 任务管理器 + /// + public class TaskManager:ITaskManager + { + private CoroutineMgr mCoroutineMgr; //Unity原生协程 + + public TaskManager() + { + + //协程管理器初始化 + mCoroutineMgr = XCore.I.BaseGameObject + .GetComponentOrAdd(); + + } + + + + ~TaskManager() + { + mCoroutineMgr = null; + } + + + + public void RxRun(Action action,Action RunFinish = null) + { + var act = Observable.Start(action); + if(RunFinish != null) + { + Observable.WhenAll(act) + .ObserveOnMainThread() + .Subscribe((xs) => + { + RunFinish(xs); + }); + } + } + + } +} diff --git a/Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs.meta b/Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs.meta new file mode 100644 index 0000000..6af6b95 --- /dev/null +++ b/Assets/TinaX/Core/System/TaskManager/Script/TaskManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27c6dd4723a3c82498495afb453a34be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TimeMachine.meta b/Assets/TinaX/Core/System/TimeMachine.meta new file mode 100644 index 0000000..8de32e9 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91d72807be068f448b09f22b575e59bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs b/Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs new file mode 100644 index 0000000..ff44944 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections; +using System.Collections.Generic; +//using UnityEngine; + + +namespace TinaX +{ + /// + /// 时间机 + /// + public interface ITimeMachine + { + /// + /// 添加定时计划任务 + /// + /// 延迟时间(秒) + /// 时间回调 + /// 任务句柄 + int AddTimerPlane(long timeLater, Action callback); + + /// + /// 添加定时计划任务 广播方式 + /// + /// 延迟时间(秒) + /// 事件名 字符 + /// 任务句柄 + int AddTimePlane_Event(long timeLater, string eventName); + + /// + /// 移除定时计划任务 + /// + /// 注册时获得的ID + void RemoveTimerPlane(int id); + + /// + /// 登记全局Update事件管理 + /// + /// + /// 调用顺序,值越大,调用顺序越靠后 + void AddUpdate(Action callback, int Order = 0); + + /// + /// 移除全局Update事件管理 + /// + /// + /// 登记时用的值 + void RemoveUpdate(Action callback, int Order = 0); + + /// + /// 登记全局LateUpdate事件管理 + /// + /// + /// 调用顺序,值越大,调用顺序越靠后 + void AddLateUpdate(Action callback, int Order = 0); + + /// + /// 移除全局LateUpdate事件管理 + /// + /// + /// 登记时用的值 + void RemoveLateUpdate(Action callback, int Order = 0); + + } +} + diff --git a/Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs.meta b/Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs.meta new file mode 100644 index 0000000..0bf91b3 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/ITimeMachine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a39c2b63222239c458d00dc53e22da84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs b/Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs new file mode 100644 index 0000000..cb29b46 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs @@ -0,0 +1,404 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UniRx; + +namespace TinaX +{ + [DisallowMultipleComponent] + public class TimeMachineBehaviour : MonoBehaviour + { + #region runtime_计时器 + + /// + /// 总计时队列 + /// + private List mTimerQueue = new List(); + + /// + /// 判断时间间隔 + /// + private float m_interval = 0; + /// + /// 下次队列检查时间戳 + /// + private long next_Inspect_time = 0; + + private IDisposable mdisposable; + + + #endregion + + #region 时间刷新驱动 + //Update之类的全局驱动 + private Dictionary mUpdate = new Dictionary(); + private List mUpdateOrder = new List(); + + private Dictionary mLateUpdate = new Dictionary(); + private List mLateUpdateOrder = new List(); + + #endregion + + #region Public + + /// + /// 添加计时器计划任务 + /// + /// + /// + /// + public int AddTimePlane(long timeLater,Action callback) + { + var cur_time = GetTimeStamp(); + var handle_id = queue_GetUsableID(); + var item = new S_TimerQueueItem() + { + handle_id = handle_id, + timeType = E_TimeType.once, + callback = callback + }; + //计算下次触发时间 + item.nextTiggerTime = cur_time + timeLater; + //Debug.Log("设置到时间戳 :" + item.nextTiggerTime); + //加入队列 + mTimerQueue.Add(item); + if(m_interval <= 0) + { + InspectQueue(); + } + else + { + if(next_Inspect_time <= 0) + { + InspectQueue(); + } + else + { + if(item.nextTiggerTime < next_Inspect_time) + { + InspectQueue(); + } + } + } + + return handle_id; + } + + public void RemoveTimePlane(int id) + { + foreach(var item in mTimerQueue) + { + if(item.handle_id == id) + { + mTimerQueue.Remove(item); + break; + } + } + return; + } + + + /// + /// 添加计时器计划任务(事件广播模式) + /// + /// + /// + /// + public int AddTimePlane_Event(long timeLater, string eventName) + { + var cur_time = GetTimeStamp(); + var handle_id = queue_GetUsableID(); + var item = new S_TimerQueueItem() + { + handle_id = handle_id, + timeType = E_TimeType.once, + callback = () => { + //XEvent.Call(eventName); + } + }; + //计算下次触发时间 + item.nextTiggerTime = cur_time + timeLater; + //Debug.Log("设置到时间戳 :" + item.nextTiggerTime); + //加入队列 + mTimerQueue.Add(item); + if (m_interval <= 0) + { + InspectQueue(); + } + else + { + if (next_Inspect_time <= 0) + { + InspectQueue(); + } + else + { + if (item.nextTiggerTime < next_Inspect_time) + { + InspectQueue(); + } + } + } + + return handle_id; + } + + public void AddUpdate(Action callback,int Order = 0) + { + if (mUpdate.ContainsKey(Order)) + { + mUpdate[Order] += callback; + } + else + { + mUpdate.Add(Order, new Action(()=> { })); + mUpdate[Order] += callback; + } + if (!mUpdateOrder.Contains(Order)) + { + mUpdateOrder.Add(Order); + } + mUpdateOrder.Sort(); + } + + public void RemoveUpdate(Action callback,int Order = 0) + { + //Debug.Log("移除:调用了"); + if (mUpdate.ContainsKey(Order)) + { + //Debug.Log(mUpdate[Order].GetInvocationList().Length); + mUpdate[Order] -= callback; + } + if (mUpdate[Order].GetInvocationList().Length <= 1) + { + mUpdate.Remove(Order); + mUpdateOrder.Remove(Order); + } + } + + public void AddLateUpdate(Action callback, int Order = 0) + { + if (mLateUpdate.ContainsKey(Order)) + { + mLateUpdate[Order] += callback; + } + else + { + mLateUpdate.Add(Order, callback); + } + if (!mLateUpdateOrder.Contains(Order)) + { + mLateUpdateOrder.Add(Order); + } + mLateUpdateOrder.Sort(); + } + + public void RemoveLateUpdate(Action callback, int Order = 0) + { + if (mLateUpdate.ContainsKey(Order)) + { + mLateUpdate[Order] -= callback; + } + if (mLateUpdate[Order].GetInvocationList().Length <= 0) + { + mLateUpdate.Remove(Order); + mLateUpdateOrder.Remove(Order); + } + } + + #endregion + + + #region Update + + private void Update() + { + foreach(var item in mUpdateOrder) + { + mUpdate[item](); + } + } + + private void LateUpdate() + { + foreach (var item in mLateUpdateOrder) + { + mLateUpdate[item](); + } + } + + #endregion + + /// + /// 检查队列内容(单次) + /// + private void InspectQueue() + { + if(mdisposable != null) + { + mdisposable.Dispose(); + } + + //Debug.Log("一次队列判断"); + var cur_time = GetTimeStamp(); //当前时间 + //Debug.Log("当前时间:" + cur_time) ; + if (mTimerQueue.Count <= 0) + { + //停掉计时器 + m_interval = 0; + } + else + { + //找到距离当前时间最近的一个 + S_TimerQueueItem near_item = new S_TimerQueueItem() + { + nextTiggerTime = -1 + }; + for(int i = mTimerQueue.Count -1; i >=0; i--) + { + var v = mTimerQueue[i]; + if(v.nextTiggerTime <= cur_time) + { + //触发它,然后重新编排队列 + v.callback(); + if (v.timeType == E_TimeType.once) + { + //删掉 + mTimerQueue.RemoveAt(i); + } + else + { + //TODO + } + } + else + { + if(near_item.nextTiggerTime == -1) + { + near_item = v; + } + else if(v.nextTiggerTime < near_item.nextTiggerTime) + { + near_item = v; + } + } + } + if (mTimerQueue.Count <= 0) + { + m_interval = 0; + } + else + { + long interval = near_item.nextTiggerTime - cur_time; + m_interval = interval; + + //Debug.Log("interval:" + interval); + next_Inspect_time = cur_time + interval; + //根据时间间隔,设定下次调用 + mdisposable = Observable.Timer(new TimeSpan(0, 0, (int)interval)).Subscribe(_ => InspectQueue()); + } + + } + } + + + + + #region 计时队列管理 + + /// + /// 队列中是否有这个ID + /// + private bool queue_IsIdExist(int id) + { + foreach(var item in mTimerQueue) + { + if (item.handle_id == id) + { + return true; + } + } + return false; + } + + + /// + /// 获取一个可用的队列ID + /// + private int queue_GetUsableID() + { + int id = UnityEngine.Random.Range(100, 10000); + while (queue_IsIdExist(id)) + { + id++; + } + return id; + } + + + #endregion + + private static long GetTimeStamp() + { + TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); + return long.Parse(Convert.ToInt64(ts.TotalSeconds).ToString()); + } + + /// + /// 计时器排队队列成员信息 + /// + public struct S_TimerQueueItem + { + /// + /// 计时成员句柄ID + /// + public int handle_id; + + /// + /// 计时类型 + /// + public E_TimeType timeType; + /// + /// 下次触发时间 + /// + public long nextTiggerTime; + + /// + /// 间隔类型(如果是每隔一段时间执行) + /// + public E_IntervalType intervalType; + /// + /// 间隔量 + /// + public float intervalValue; + + public Action callback; + } + + /// + /// 计时器 计时类型 + /// + public enum E_TimeType + { + /// + /// 一次性即时(时间戳) + /// + once, + /// + /// 每隔一段时间 + /// + every, + } + + /// + /// 计时器间隔类型 + /// + public enum E_IntervalType + { + + } + + } +} + diff --git a/Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs.meta b/Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs.meta new file mode 100644 index 0000000..ff08892 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/TimeMachineBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c3c8ae80c489f942a180c19286dafb9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs b/Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs new file mode 100644 index 0000000..6254ed6 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using CatLib; + +namespace TinaX +{ + + public class TimeMachine : Facade + { + public static ITimeMachine I + { + get + { + return Instance; + } + } + } + +} + +namespace TinaX.Cat +{ + public class TimeMachineProvide : IServiceProvider + { + public void Init() + { + + } + + public void Register() + { + App.Singleton().Alias(); + } + } +} + diff --git a/Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs.meta b/Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs.meta new file mode 100644 index 0000000..6d3e454 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/TimeMachineProvide.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8fbcd6295f2af3f418b879e3b9fbb763 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs b/Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs new file mode 100644 index 0000000..b78e775 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX +{ + public class XTimeMachine :ITimeMachine + { + + #region runtime + + private TimeMachineBehaviour mTimeMachineBehaviour; + + + #endregion + + public XTimeMachine() + { + + //MonoBehaviour部分 + mTimeMachineBehaviour = GameObjectHelper + .FindOrCreateGo(Setup.Framework_Base_GameObject) + .GetComponentOrAdd(); + } + + /// + /// 添加时间计划任务 + /// + public int AddTimerPlane(long timeLater, Action callback) + { + return mTimeMachineBehaviour.AddTimePlane(timeLater, callback); + } + + public void RemoveTimerPlane(int id) + { + mTimeMachineBehaviour.RemoveTimePlane(id); + } + + public int AddTimePlane_Event(long timeLater, string eventName) + { + return mTimeMachineBehaviour.AddTimePlane_Event(timeLater, eventName); + } + + public void AddUpdate(Action callback, int Order = 0) + { + mTimeMachineBehaviour.AddUpdate(callback, Order); + } + + + public void RemoveUpdate(Action callback, int Order = 0) + { + mTimeMachineBehaviour.RemoveUpdate(callback, Order); + } + + public void AddLateUpdate(Action callback, int Order = 0) + { + mTimeMachineBehaviour.AddLateUpdate(callback, Order); + } + + public void RemoveLateUpdate(Action callback, int Order = 0) + { + mTimeMachineBehaviour.RemoveLateUpdate(callback, Order); + } + + } +} + diff --git a/Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs.meta b/Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs.meta new file mode 100644 index 0000000..c8dfaf7 --- /dev/null +++ b/Assets/TinaX/Core/System/TimeMachine/XTimeMachine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 748e2b7546a67264a8447d3b6bc45247 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit.meta b/Assets/TinaX/Core/System/UIKit.meta new file mode 100644 index 0000000..42e0619 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 28d5b58231519234d8e8b64b3cb5be2b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Config.meta b/Assets/TinaX/Core/System/UIKit/Config.meta new file mode 100644 index 0000000..f329610 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Config.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 109188f2c70e10842b9cb81e5ce8f60e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs b/Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs new file mode 100644 index 0000000..393f786 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs @@ -0,0 +1,91 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR && ODIN_INSPECTOR +using Sirenix.OdinInspector; +#endif +//using System.Collections.Generic; + +namespace TinaX.UIKit +{ + [CreateAssetMenu(fileName ="UIGroup",menuName = "TinaX/UI组")] + public class UIGroupConf : ScriptableObject + { +#if UNITY_EDITOR && ODIN_INSPECTOR + [Header("UI登记组")] + [InfoBox("注意确保登记中的所有UI的路径都是可被资源管理器访问的哦。")] + [TableList] +#endif + public UIGroupItem[] UIRegister; + + + + + + /// + /// 注册信息登记,key:name value:path + /// + private Dictionary m_dict_ui_register; + + /// + /// 根据UI注册名获取UI路径 + /// + /// + /// + public string GetPathByName(string name) + { + if(m_dict_ui_register == null) + { + InitDict(); + } + if (m_dict_ui_register.ContainsKey(name)) + { + return m_dict_ui_register[name]; + } + else + { + return ""; + } + } + + public void InitDict() + { + m_dict_ui_register = new Dictionary(); + foreach(var item in UIRegister) + { + if (item.Name != "") + { + if (!m_dict_ui_register.ContainsKey(item.Name)) + { + m_dict_ui_register.Add(item.Name, item.Path); + } + else + { + Debug.LogWarning("UIKit: UI组有重复的名称定义"); + } + } + else + { + Debug.LogWarning("UIKit: UI组有空的名称定义"); + } + + } + } + + } + + [System.Serializable] + public struct UIGroupItem + { +#if UNITY_EDITOR + [Header("UI名")] +#endif + public string Name; +#if UNITY_EDITOR && ODIN_INSPECTOR + [Header("UI路径")] + [FilePath] +#endif + public string Path; + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs.meta b/Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs.meta new file mode 100644 index 0000000..78decba --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Config/UIGroupConf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 913679a97de2d864fb6c424bd05ca6f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: e7267f21494007d4a9e8eb36646b7779, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs b/Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs new file mode 100644 index 0000000..8a4cc1e --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs @@ -0,0 +1,187 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +#if UNITY_EDITOR && ODIN_INSPECTOR +using Sirenix.OdinInspector; +//using CatLib; //我也忘了这里为什么会引用CatLib了,先给注释掉看看会怎么样 +#endif + +namespace TinaX.UIKit +{ + public class UIKitConfig : ScriptableObject + { + + #region 一些常规的设置 + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI系统")] + [Header("默认UI组")] +#endif + public UIGroupConf Default_UIGroup; + + +#if UNITY_EDITOR && ODIN_INSPECTOR + + private void HelpURL_AdvMode() + { + UnityEngine.Application.OpenURL("https://github.com/yomunsam/TinaX/wiki/system_uikit_advanced_mode"); + } + + [FoldoutGroup("UI系统")] + [Header("UI高级模式")] + [InfoBox("该设置不可在运行时修改")] + [InlineButton("HelpURL_AdvMode","About Adv Mode")] +#endif + public bool Use_AdvancedMode = false; + + #endregion + + + #region 关于UI的绘制与缩放 + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI绘制")] + [Header("缩放模式")] +#endif + public CanvasScaler.ScaleMode Canvas_Scale_Mode = CanvasScaler.ScaleMode.ConstantPixelSize; + +#if UNITY_EDITOR && ODIN_INSPECTOR + private bool can_show_uisize() + { + if(Canvas_Scale_Mode == CanvasScaler.ScaleMode.ScaleWithScreenSize) + { + return true; + } + else { return false; } + } + [FoldoutGroup("UI绘制")] + [Header("UI像素尺寸")] + [ShowIf("can_show_uisize")] +#endif + public Vector2 UISize = new Vector2Int(1920, 1080); + + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI绘制")] + [Header("权重模式")] + [ShowIf("can_show_uisize")] + +#endif + public CanvasScaler.ScreenMatchMode ScreenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight; + +#if UNITY_EDITOR && ODIN_INSPECTOR + private bool can_show_match() + { + if (Canvas_Scale_Mode == CanvasScaler.ScaleMode.ScaleWithScreenSize && ScreenMatchMode == CanvasScaler.ScreenMatchMode.MatchWidthOrHeight) + { + return true; + } + else { return false; } + } + [FoldoutGroup("UI绘制")] + [Header("缩放权重")] + [ShowIf("can_show_match")] + [MinValue(0)] + [MaxValue(1)] + [InfoBox("宽度:0 | 高度:1")] +#endif + public float Match = 1; + +#if UNITY_EDITOR && ODIN_INSPECTOR + private bool can_if_constantPixelSize() + { + if (Canvas_Scale_Mode == CanvasScaler.ScaleMode.ConstantPixelSize) + { + return true; + } + else { return false; } + } + [FoldoutGroup("UI绘制")] + + [ShowIf("can_if_constantPixelSize")] +#endif + public float ScaleFactor = 1; + +#if UNITY_EDITOR && ODIN_INSPECTOR + private bool show_if_phy() + { + if (Canvas_Scale_Mode == CanvasScaler.ScaleMode.ConstantPixelSize) + { + return true; + } + else { return false; } + } + [FoldoutGroup("UI绘制")] + [ShowIf("show_if_phy")] +#endif + public CanvasScaler.Unit physicalUnit = CanvasScaler.Unit.Points; + + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI绘制")] +#endif + public float referencePixelsPerUnit = 100; + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI绘制")] + [Header("遮罩背景颜色")] +#endif + public Color MaskColor = new Color(0, 0, 0, 0.5f); + + #endregion + + + #region 导入和预处理 + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("资源导入")] + [Header("UI散图根目录")] + [FolderPath] +#endif + public string UI_Img_Path; +#if UNITY_EDITOR && ODIN_INSPECTOR + + [FoldoutGroup("资源导入")] + [Header("UI图集根目录")] + [FolderPath] + [InfoBox("注意,请将该目录配置进资源管理配置中的特殊路径列表,类型为Sub_dir")] + //[InlineButton("AddFolderToAssetConf","帮我加入配置")] +#endif + public string UI_Atlas_Path; + + + #endregion + + + #region UI安全区 +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI安全区")] + [Header("启用UI安全区")] +#endif + public bool Enable_UISafeArea; + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI安全区")] + [Header("UI安全区配置数据JSON")] + [FilePath] +#endif + public string UI_SafeArea_Json; + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("UI安全区")] + [Header("使用TinaX资源系统加载JSON")] + [InfoBox("否则将使用Resources.Load方式加载")] +#endif + public bool UISafeArea_LoadByVFS = true; + + + #endregion + + + } + + + +} + diff --git a/Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs.meta b/Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs.meta new file mode 100644 index 0000000..1ed99e1 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Config/UIKitConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eeabb80637acb5c47b6cdeb3e4be2f30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b2385ab0902e6dc4c9b179f964c82fff, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Const.meta b/Assets/TinaX/Core/System/UIKit/Const.meta new file mode 100644 index 0000000..e748d5e --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Const.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f3313877b612084693389642662e995 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs b/Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs new file mode 100644 index 0000000..c7cf7ee --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX.UIKit +{ + public class UIKitConst + { + public const string UIKit_RootGameObject_Name = "UIKit"; + /// + /// 在场景中UIRoot的GameObject名 + /// + public const string UIKit_UIRootGameObject_Name = "UIRoot"; + + public const string UIKit_UICameraGameObject_Name = "UICamera"; + } + + +} diff --git a/Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs.meta b/Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs.meta new file mode 100644 index 0000000..e098c14 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Const/UIKitConst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c67238d25e6a90e46a926c9de8db1130 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor.meta b/Assets/TinaX/Core/System/UIKit/Editor.meta new file mode 100644 index 0000000..0dc96ca --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca291140976d6a24890e0aead9f77de7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting.meta b/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting.meta new file mode 100644 index 0000000..fdd92c6 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c1af26148e6649f429d61dba7fa9125a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs b/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs new file mode 100644 index 0000000..011ff45 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs @@ -0,0 +1,81 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + + +namespace TinaX.UIKit.ProjectSetting +{ + static class PSUIKitConfig + { + private static UIKitConfig mConfig; + private static SerializedObject mSer_Config; + + private static GUIStyle mTitle = new GUIStyle(); + + private static SerializedProperty mConf_UIKit_Default_UIGroup; //默认UI组 + private static SerializedProperty mConf_UIKit_Use_AdvancedMode; //高级模式 + + + [SettingsProvider] + public static SettingsProvider Projects_UIKit() + { + var provider = new SettingsProvider("TinaX/UIKit", SettingsScope.Project) + { + label = "UIKit", + activateHandler = (searchContext, rootElement) => + { + mTitle.normal.textColor = TinaX.Core.XEditorStyleDefine.Color_Blue; + mTitle.fontSize = 15; + + mConfig = TinaX.Config.GetTinaXConfig(TinaX.Conf.ConfigPath.uikit); + if (mConfig != null) + { + mSer_Config = new SerializedObject(mConfig); + if (mSer_Config != null) + { + mConf_UIKit_Default_UIGroup = mSer_Config.FindProperty("Default_UIGroup"); + mConf_UIKit_Use_AdvancedMode = mSer_Config.FindProperty("Use_AdvancedMode"); + + } + + } + + }, + guiHandler = (searchContext) => + { + if (mSer_Config != null && mConfig != null) + { + EditorGUILayout.BeginVertical(GUILayout.MaxWidth(500)); + + EditorGUILayout.LabelField(" UI系统",mTitle); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(mConf_UIKit_Default_UIGroup, new GUIContent("默认UI组"), true); + EditorGUILayout.PropertyField(mConf_UIKit_Use_AdvancedMode, new GUIContent("启用UI高级模式"), true); + + + + EditorGUILayout.Space(); + EditorGUILayout.LabelField(" UI绘制" , mTitle); + EditorGUILayout.Space(); + + + + EditorGUILayout.EndVertical(); + + mSer_Config.ApplyModifiedProperties(); + } + + }, + deactivateHandler = () => + { + + } + }; + + return provider; + } + } + +} diff --git a/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs.meta new file mode 100644 index 0000000..40d7bc6 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/ProjectSetting/PSUIKitConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6501cce4f17635a409d45949322b1d4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools.meta new file mode 100644 index 0000000..4667a60 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c503eb4e72d9bef4880b9ecda2966eaa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs new file mode 100644 index 0000000..622ee6d --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using TinaX; +using TinaX.UIKit; + +namespace TinaXEditor.UIKit +{ + //[CustomEditor(typeof(UIEntity))] + public class UIBaseEdit: Editor + { + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + + } + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs.meta new file mode 100644 index 0000000..30097ad --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIBaseEdit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a5cdeacea5e849459e89d7d5f3a587f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit.meta new file mode 100644 index 0000000..4a1ca75 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 65f8818ab88934344b3793b2def53f6f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs new file mode 100644 index 0000000..4e6b611 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs @@ -0,0 +1,85 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEngine.UI; +using UnityEditor.UI; +using TinaX; +using TinaX.UIKit; + +namespace TinaXEditor.UIKit +{ + [CustomEditor(typeof(XButton))] + [CanEditMultipleObjects] + public class XButtonEdit : ButtonEditor + { + private Rect windowRect = new Rect(8, 45, 120, 150); + + private void OnSceneGUI() + { + + Handles.BeginGUI(); + + GUILayout.Window(10, windowRect, Draw_UIKit_xText_window, "xButton"); + + Handles.EndGUI(); + } + + private void Draw_UIKit_xText_window(int windowId) + { + var xButton = (XButton)target; + //预设对象检索 + var xText = xButton.gameObject.GetComponentInChildren(); + var xImage = xButton.gameObject.GetComponentInChildren(); + + + GUILayout.Label(target.name); + + //文字内容 + if(xText != null) + { + GUILayout.Space(8); + //文字内容 + + GUILayout.Label("按钮文字:"); + xText.text = GUILayout.TextField(xText.text); + + GUILayout.Space(5); + //字号 + GUILayout.BeginHorizontal(); + GUILayout.Label("字号:" + xText.fontSize.ToString()); + if (GUILayout.Button("+", GUILayout.Width(20))) + { + xText.fontSize += 2; + } + if (GUILayout.Button("-", GUILayout.Width(20))) + { + xText.fontSize -= 2; + } + GUILayout.EndHorizontal(); + } + + + + + } + + private enum E_xButton_format_type + { + none, + text, + img, + img_text + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + var xButton = (XButton)target; + + + } + + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs.meta new file mode 100644 index 0000000..2d2c8f2 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XButtonEdit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7bfe4861db40b2b48be6e182500c7817 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs new file mode 100644 index 0000000..0bf44b5 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs @@ -0,0 +1,100 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.UI; +using TinaX; +using TinaX.UIKit; +using TinaXEditor.I18N; + +namespace TinaXEditor.UIKit +{ + [CustomEditor(typeof( XText))] + public class XTextEdit : UnityEditor.UI.TextEditor + { + private Rect windowRect = new Rect(8, 45, 120, 220); + + private void OnSceneGUI() + { + + Handles.BeginGUI(); + + GUILayout.Window(10, windowRect, Draw_UIKit_xText_window, "xText"); + + Handles.EndGUI(); + } + + private void Draw_UIKit_xText_window(int windowId) + { + var xText = (XText)target; + GUILayout.Label(target.name); + + //字体大小 + + GUILayout.BeginHorizontal(); + GUILayout.Label("字号:" + xText.fontSize.ToString()); + if (GUILayout.Button("+", GUILayout.Width(20))) + { + xText.fontSize += 2; + } + if (GUILayout.Button("-", GUILayout.Width(20))) + { + xText.fontSize -= 2; + } + GUILayout.EndHorizontal(); + xText.raycastTarget = GUILayout.Toggle(xText.raycastTarget, "可否交互"); + + + //I18N + GUILayout.Space(10); + GUILayout.Label("国际化设置"); + xText.UseI18N = GUILayout.Toggle(xText.UseI18N,"启用国际化"); + if (xText.UseI18N) + { + GUILayout.Label("I18N Key"); + xText.I18NKey = GUILayout.TextField(xText.I18NKey); + xText.UseI18NInRumtime = GUILayout.Toggle(xText.UseI18NInRumtime, "运行时启用"); + + if (GUILayout.Button("刷新文本")) + { + xText.text = XI18NCacheEditor.GetGameStringByKey(xText.I18NKey); + //xText.SetAllDirty(); + } + } + + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + var xText = (XText)target; + + + GUILayout.Space(10); + GUILayout.Label("国际化设置"); + xText.UseI18N = GUILayout.Toggle(xText.UseI18N, "启用国际化"); + if (xText.UseI18N) + { + GUILayout.Label("I18N Key"); + xText.I18NKey = GUILayout.TextField(xText.I18NKey); + xText.UseI18NInRumtime = GUILayout.Toggle(xText.UseI18NInRumtime, "运行时启用"); + + GUILayout.BeginHorizontal(); + if (GUILayout.Button("刷新文本")) + { + xText.text = XI18NCacheEditor.GetGameStringByKey(xText.I18NKey); + //xText.SetAllDirty(); + } + if (GUILayout.Button("I18N编辑器")) + { + //xText.text = XI18NCacheEditor.GetGameStringByKey(xText.I18NKey); + //xText.SetAllDirty(); + } + + GUILayout.EndHorizontal(); + } + } + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs.meta new file mode 100644 index 0000000..cc91e61 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIComponentEdit/XTextEdit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce094507dba9cf3409ad21532e045850 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs new file mode 100644 index 0000000..0616047 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs @@ -0,0 +1,8 @@ +using UnityEngine; +using System.Collections; +using UnityEditor; + +public class UICustomChange : Editor +{ + +} \ No newline at end of file diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs.meta new file mode 100644 index 0000000..0a4ee4f --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UICustomChange.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa2cebbf338076945ba51f1c6047a2f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs new file mode 100644 index 0000000..cc25319 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using TinaX; +using TinaX.UIKit; + + +namespace TinaXEditor.UIKit +{ + [CustomEditor(typeof(UIEntity))] + [CanEditMultipleObjects] + public class UIEntityEdit : Editor + { + private Rect windowRect = new Rect(8, 45, 120, 150); + + private void OnSceneGUI() + { + Handles.BeginGUI(); + + GUILayout.Window(0, windowRect, Draw_UIKit_Main_Window, "UIKit"); + + Handles.EndGUI(); + } + + + private void Draw_UIKit_Main_Window(int windowID) + { + GUILayout.Label("UI:" + target.name); + + } + } + +} diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs.meta new file mode 100644 index 0000000..0bf1f8c --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIEntityEdit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 709a7b3badbe7bf4a99048ed878e3d9b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs new file mode 100644 index 0000000..2ecf061 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.SceneManagement; +using TinaX.UIKit; + + +namespace TinaXEditor.UIKit +{ + [InitializeOnLoad] + public class UIKitEditHelper + { + static UIKitEditHelper() + { + UnityEditor.Experimental.SceneManagement.PrefabStage.prefabStageOpened += OnSceneOpened; + + } + + + private static void OnSceneOpened(UnityEditor.Experimental.SceneManagement.PrefabStage prefabStage) + { + //Debug.Log("emm"); + if(prefabStage.prefabContentsRoot.GetComponent() != null) + { + + } + } + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs.meta new file mode 100644 index 0000000..62bba0f --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIEditTools/UIKitEditHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 21e647bc717890345997653e4c54cc89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs b/Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs new file mode 100644 index 0000000..b777b17 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs @@ -0,0 +1,44 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace TinaXEditor.UIKit +{ + public class UIKitEditor + { + ///// + ///// 当前场景是UIKit编辑工作空间场景吗 + ///// + ///// + //public static bool Is_UIKit_Workspace_Scene() + //{ + // //检查UIRoot GameObject + // var go_UIEDITOR = GameObject.Find("UIKit_Editor_Root/UIRoot"); + // if (go_UIEDITOR == null) + // { + // return false; + // } + // if(go_UIEDITOR.GetComponent() == null) + // { + // return false; + // } + // return true; + //} + + //public static GameObject Get_UIKit_Workspace_UIRoot() + //{ + // var go_UIEDITOR = GameObject.Find("UIKit_Editor_Root/UIRoot"); + // if (go_UIEDITOR == null) + // { + // return null; + // } + // if (go_UIEDITOR.GetComponent() == null) + // { + // return null; + // } + // return go_UIEDITOR; + //} + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs.meta new file mode 100644 index 0000000..e0af2b7 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UIKitEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01a5effeeb762cb419c6ee3bc59f6a20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs b/Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs new file mode 100644 index 0000000..fd5d8e5 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs @@ -0,0 +1,61 @@ +#if UNITY_2019_1_OR_NEWER + +#else + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityToolbarExtender; +using TinaX; +using TinaX.UIKit; + +namespace TinaXEditor.UIKit +{ + [InitializeOnLoad] + public class UISelect + { + static UISelect() + { + ToolbarExtender.LeftToolbarGUI.Add(OnToolbar); + } + + static void OnToolbar() + { + if(UnityEngine.Application.isPlaying){ + GUILayout.FlexibleSpace(); + + if(GUILayout.Button(new GUIContent("UI", "UI编辑区"), ToolbarStyles.commandButtonStyle)) + { + // SceneHelper.StartScene("Assets/ToolbarExtender/Example/Scenes/Scene1.unity"); + var go = GameObject.Find(TinaX.Setup.Framework_Base_GameObject + "/" + UIKitConst.UIKit_RootGameObject_Name + "/" + UIKitConst.UIKit_UIRootGameObject_Name); + if (go != null){ + Selection.activeGameObject = go; + } + } + } + + } + + static class ToolbarStyles + { + public static readonly GUIStyle commandButtonStyle; + + static ToolbarStyles() + { + commandButtonStyle = new GUIStyle("Command") + { + fontSize = 14, + alignment = TextAnchor.MiddleCenter, + imagePosition = ImagePosition.ImageAbove, + fontStyle = FontStyle.Normal + }; + } + } + } +} + + + + +#endif \ No newline at end of file diff --git a/Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs.meta new file mode 100644 index 0000000..96cd81e --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/UISelect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4bb70731a4f4014bbfaab9f07066712 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs b/Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs new file mode 100644 index 0000000..929b899 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs @@ -0,0 +1,174 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.IO; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using TinaX; +using TinaX.UIKit; + +namespace TinaXEditor.UIKit +{ + /// + /// UIKit 编辑器菜单 + /// + public class XUIKitMenus + { + [MenuItem("TinaX/UIKit/创建UI")] + [MenuItem("Assets/Create/TinaX/UI")] + static void Create_UI_Prefab() + { + //获取当前路径 + if(Selection.assetGUIDs.Length >1) + { + EditorUtility.DisplayDialog("定位错误","当前选中了多个项目,无法确定需要新建的位置。","好"); + } + if(Selection.assetGUIDs.Length < 1) + { + EditorUtility.DisplayDialog("定位错误", "当前未选中任何位置", "好"); + } + //var path = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]); + //Debug.Log("path " + path); + string assetPath = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]); + string path = assetPath; + if (System.IO.Path.HasExtension(assetPath)) + { + path = System.IO.Path.GetDirectoryName(assetPath); + path = path.Replace("\\", "/"); + } + var file_path = path + "/UIEntity.prefab"; + if (File.Exists(System.IO.Path.Combine(System.IO.Path.GetFullPath(path), "UIEntity.prefab"))) + { + var index = 1; + var new_path = "UIEntity" + index.ToString() + ".prefab"; + while (File.Exists(System.IO.Path.Combine(System.IO.Path.GetFullPath(path), new_path))) + { + index++; + } + file_path = path + "/UIEntity" + index.ToString() + ".prefab"; + } + + //创建UI + var UIEntity_Go = new GameObject(StringHelper.GenRandomStr(10)); + UIEntity_Go.GetComponentOrAdd().renderMode = RenderMode.ScreenSpaceOverlay; + UIEntity_Go.GetComponentOrAdd(); + UIEntity_Go.GetComponentOrAdd(); + + //var rect_trans2 = UIEntity_Go.GetComponent(); + //rect_trans2.anchoredPosition = Vector2.zero; + //rect_trans2.anchorMax = Vector2.one; + //rect_trans2.anchorMin = Vector2.zero; + //rect_trans2.sizeDelta = Vector2.zero; + //rect_trans2.localScale = Vector3.one; + + UIEntity_Go.SetLayerRecursive(5); + PrefabUtility.SaveAsPrefabAsset(UIEntity_Go, file_path); + GameObject.DestroyImmediate(UIEntity_Go); + + } + + //[MenuItem("TinaX/UIKit/创建UI工作空间")] + //[MenuItem("Assets/Create/TinaX/UI工作空间")] + //static void Create_UI_WorkSpace() + //{ + // //获取当前路径 + // if (Selection.assetGUIDs.Length > 1) + // { + // EditorUtility.DisplayDialog("定位错误", "当前选中了多个项目,无法确定需要新建的位置。", "好"); + // } + // if (Selection.assetGUIDs.Length < 1) + // { + // EditorUtility.DisplayDialog("定位错误", "当前未选中任何位置", "好"); + // } + // //var path = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]); + // //Debug.Log("path " + path); + // string assetPath = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]); + // string path = assetPath; + // if (System.IO.Path.HasExtension(assetPath)) + // { + // path = System.IO.Path.GetDirectoryName(assetPath); + // path = path.Replace("\\", "/"); + // } + // var file_path = path + "/UIWorkSpace.unity"; + // if (File.Exists(System.IO.Path.Combine(System.IO.Path.GetFullPath(path), "UIWorkSpace.unity"))) + // { + // var index = 1; + // var new_path = "UIWorkSpace" + index.ToString() + ".unity"; + // while (File.Exists(System.IO.Path.Combine(System.IO.Path.GetFullPath(path), new_path))) + // { + // index++; + // } + // file_path = path + "/UIWorkSpace" + index.ToString() + ".unity"; + // } + + // //创建Scene + // var scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); + + // EditorSceneManager.SetActiveScene(scene); + // //在Scene中创建内容 + // Create_UI_WorkGameObject(); + + // EditorSceneManager.SaveScene(scene, file_path); + //} + + //private static void Create_UI_WorkGameObject() + //{ + // var Go_EditRoot = GameObjectHelper.FindOrCreateGo("UIKit_Editor_Root"); + // var Go_UICamera = new GameObject("UICamera"); + // Go_UICamera.transform.SetParent(Go_EditRoot.transform); + // var UICamera = Go_UICamera.GetComponentOrAdd(); + // Go_UICamera.transform.position = new Vector3(500, 500, 500); + // UICamera.clearFlags = CameraClearFlags.Depth; + // UICamera.cullingMask = 1<< 5; + // UICamera.orthographic = true; + // UICamera.allowHDR = false; + // UICamera.allowMSAA = false; + + // var Go_UIRoot = new GameObject("UIRoot").SetLayerRecursive(5); + // Go_UIRoot.transform.SetParent(Go_EditRoot.transform); + // Go_UIRoot.GetComponentOrAdd(); + // var Canvas = Go_UIRoot.GetComponentOrAdd(); + // Canvas.renderMode = RenderMode.ScreenSpaceCamera; + // Canvas.worldCamera = UICamera; + // var Canvas_Scaler = Go_UIRoot.GetComponentOrAdd(); + // var _GraphicRaycaster = Go_UIRoot.GetComponentOrAdd(); + // _GraphicRaycaster.ignoreReversedGraphics = true; + + // var Go_EventSystem = GameObjectHelper.FindOrCreateGo("EventSystem"); + // var _EventSysten = Go_EventSystem.GetComponentOrAdd(); + // _EventSysten.sendNavigationEvents = true; + // var SIM = Go_EventSystem.GetComponentOrAdd(); + + //} + + [MenuItem("Assets/TinaX/编辑UI",true)] + static bool CanEditUI() + { + var go = Selection.activeGameObject; + if (go != null) + { + if (go.GetComponent() != null) + { + return true; + } + } + return false; + } + + + + [MenuItem("Assets/TinaX/编辑UI")] + static void EditUI() + { + var preview_scene = EditorSceneManager.NewPreviewScene(); + //EditorSceneManager.SetActiveScene(preview_scene); + PrefabUtility.LoadPrefabContentsIntoPreviewScene(AssetDatabase.GetAssetPath(Selection.activeInstanceID), preview_scene); + //EditorSceneManager.NewScene( NewSceneSetup.EmptyScene, NewSceneMode.Single); + //PrefabUtility.InstantiatePrefab(Selection.activeGameObject); + } + } + +} + diff --git a/Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs.meta b/Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs.meta new file mode 100644 index 0000000..f3776fd --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Editor/XUIKitMenus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7aeb067ac8beb1243a24c0929253c8fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script.meta b/Assets/TinaX/Core/System/UIKit/Script.meta new file mode 100644 index 0000000..a7b88d4 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6362ee28d67ec5849875f7dd58d706d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs b/Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs new file mode 100644 index 0000000..16d8d4e --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs @@ -0,0 +1,74 @@ +using System; + +using UnityEngine; + +namespace TinaX.UIKit +{ + public interface IUIEntity + { + /// + /// 手动设定层级,改设置不会记录进UI管理器 + /// + /// + /// + int SetLayer(int layer); + + /// + /// 获取当前UI的GameObject + /// + /// + GameObject GetGameObject(); + + /// + /// 获取UI名,如果未使用UI组系统载入的UI则显示“Unknow” + /// + /// + string GetUIName(); + + /// + /// 获取UI路径(在可寻址系统中) + /// + /// + string GetUIPath(); + + + int GetID(); + + + + #region UI操作 + + /// + /// 隐藏自身UI + /// + /// + IUIEntity Hide(); + + /// + /// 显示被隐藏的自己 + /// + /// + IUIEntity Show(); + + /// + /// 关掉自己 + /// + void Close(); + + #endregion + + + #region 高级模式 UI操作 + + /// + /// 打开UI,在高级模式下,被打开的UI被认为是当前UI的子级UI + /// + /// UI名 + /// 附加参数 + /// 子UI的实体对象 + IUIEntity OpenUI(string ui_name, System.Object Param = null); + + #endregion + + } +} diff --git a/Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs.meta new file mode 100644 index 0000000..d64eced --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/IUIEntity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39eeb0e199597194694a95bc8356edad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs b/Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs new file mode 100644 index 0000000..1b2f09d --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs @@ -0,0 +1,217 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace TinaX.UIKit +{ + public interface IUIMgr + { + + /// + /// UI管理器是否为高级模式 + /// + bool IsAdvanced { get; } + + /// + /// UIRoot的RectTransform + /// + RectTransform UIKit_UIRoot_RectTrans { get; } + + /// + /// UI安全区管理器 + /// + XUISafeAreaMgr UISafeAreaManager { get; } + + /// + /// 打开UI + /// + /// UI名称 + /// + IUIEntity OpenUI(string ui_name); + + + /// + /// 打开UI + /// + /// UI名称 + /// UI启动参数 + /// + IUIEntity OpenUI(string ui_name, System.Object ui_param); + + /// + /// 打开UI + /// + /// UI名 + /// 是否使用UI遮罩 + /// 点击遮罩关闭UI + /// + IUIEntity OpenUI(string ui_name, bool use_mask, bool close_by_mask); + + /// + /// 打开UI + /// + /// UI名称 + /// UI启动参数 + /// 是否使用遮罩 + /// 点击遮罩关闭UI + /// + IUIEntity OpenUI(string ui_name, System.Object ui_param, bool use_mask, bool close_by_mask = false); + + +#if TinaX_CA_LuaRuntime_Enable + + /// + /// 打开UI 供Lua调用 + /// + /// UI名 + /// lua table参数 + /// 使用遮罩 + /// 点击遮罩关闭UI + /// + IUIEntity OpenUIWhitLuaParam(string ui_name, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask); + +#endif + + /// + /// 通过VFS路径打开UI + /// + /// UI路径 + /// UI 启动参数 + /// 是否启用遮罩 + /// 点击遮罩关闭UI + /// + IUIEntity OpenUIByPath(string ui_path, System.Object ui_param, bool use_mask, bool close_by_mask = false); + +#if TinaX_CA_LuaRuntime_Enable + + /// + /// 通过VFS路径打开UI 附带LuaTable参数 + /// + /// UI路径 + /// UI 启动参数 + /// 是否启用遮罩 + /// 点击遮罩关闭UI + /// + IUIEntity OpenUIByPathWhitLuaParam(string ui_path, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask = false); + +#endif + +#if TinaX_CA_LuaRuntime_Enable + + /// + /// 打开一个子级UI,给TinaX内部用的 + /// + /// + /// + /// + /// + /// + /// + /// + IUIEntity OpenUIChild(string ui_name, int parent_id, System.Object ui_param, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask = false); + +#else + /// + /// 打开一个子级UI,给TinaX内部用的 + /// + /// + /// + /// + /// + /// + /// + /// + IUIEntity OpenUIChild(string ui_name, int parent_id, System.Object ui_param, bool use_mask, bool close_by_mask = false); +#endif + + /// + /// 关闭UI【高级模式不可用】 + /// + /// UI名 + /// UI关闭参数,可空 + void CloseUI(string ui_name, System.Object Param = null); + + /// + /// 关闭UI【仅高级模式】 + /// + /// UI实例 句柄ID + /// UI关闭参数, 可空 + void CloseUI(int ui_id, System.Object Param = null); + + /// + /// 通过路径关闭UI【高级模式不可用】 + /// + /// + /// + void CloseUIByPath(string ui_path, System.Object Param = null); + +#if TinaX_CA_LuaRuntime_Enable + + /// + /// 关闭UI并传递Lua参数【Lua封装调用】 + /// + /// + /// + void CloseUIWithLuaParam(string ui_name, XLua.LuaTable luaParam); + + + /// + /// 关闭UI并传递Lua参数【Lua封装】【仅高级模式】 + /// + /// + /// + void CloseUIWithLuaParam(int ui_id, XLua.LuaTable luaParam); + + /// + /// 通过路径关闭UI并传递Lua参数【Lua封装用】 + /// + /// + /// + void CloseUIByPathWithLuaParam(string ui_path, XLua.LuaTable luaParam); + +#endif + + /// + /// 隐藏UI【非高级模式】 + /// + /// + void HideUI(string ui_name); + + /// + /// 通过路径隐藏UI【非高级模式】 + /// + /// + void HideUIByPath(string ui_path); + + /// + /// 隐藏UI【高级模式】 + /// + /// + void HideUI(int id); + + /// + /// 显示UI【高级模式】 + /// + /// + void ShowUI(int ui_id); + + /// + /// 显示UI + /// + /// + void ShowUI(string ui_name); + + /// + /// 显示UI + /// + /// + void ShowUIByPath(string ui_path); + + /// + /// 设置当前使用的UI组 + /// + /// UI组 + void SetUIGroup(UIGroupConf ui_group); + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs.meta new file mode 100644 index 0000000..5b868c6 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/IUIMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b476d7179957424fbb06756f21b26e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIBase.cs b/Assets/TinaX/Core/System/UIKit/Script/UIBase.cs new file mode 100644 index 0000000..74459e0 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIBase.cs @@ -0,0 +1,190 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR && ODIN_INSPECTOR +using Sirenix.OdinInspector; +#endif + +namespace TinaX.UIKit +{ + [DisallowMultipleComponent] + [RequireComponent(typeof(UIEntity))] + public class UIBase : UIBaseSafer + { +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("ConfIg")] +#endif + [Header("启用Update事件")] + public bool EnableUpdate; +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("ConfIg")] +#endif + [Header("次序")] + public int UpdateOrder = 0; +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("ConfIg")] +#endif + [Header("启用FixedUpdate事件")] + public bool EnableLateUpdate; +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("ConfIg")] +#endif + [Header("次序")] + public int LateUpdateOrder = 0; + + private bool mEnableUpdate; + private int mUpdateOrder; + private bool mEnableLateUpdate; + private int mLateUpdateOrder; + + private UIEntity mUIEntity; + + + #region 生命周期 + + protected override sealed void Awake() + { + //编辑器里需要直接使用Public的变量作为配置,所有不能做限制。但是要防止它在运行时被改变,所有在初始化时把它转成私有的,接下来都用私有里面的数值 + mEnableUpdate = EnableUpdate; + mEnableLateUpdate = EnableLateUpdate; + mUpdateOrder = UpdateOrder; + mLateUpdateOrder = LateUpdateOrder; + if (mEnableUpdate) + { + TimeMachine.I.AddUpdate(Self_Update, mUpdateOrder); + } + if (mEnableLateUpdate) + { + TimeMachine.I.AddLateUpdate(Self_LateUpdate, mLateUpdateOrder); + } + + mUIEntity = gameObject.GetComponent(); + + XAwake(); + } + + protected virtual void XAwake() + { + + } + + protected override sealed void Start() + { + XStart(); + } + + protected virtual void XStart() + { + + } + + protected override sealed void OnDestroy() + { + //Debug.Log("UI被关闭"); + if (mEnableUpdate) + { + TimeMachine.I.RemoveUpdate(Self_Update, mUpdateOrder); + } + if (mEnableLateUpdate) + { + TimeMachine.I.RemoveLateUpdate(Self_LateUpdate, mLateUpdateOrder); + } + + //注销事件 + foreach(var item in mEventPool) + { + XEvent.Remove(item); + } + + XOnDestroy(); + } + + protected virtual void XOnDestroy() + { + + } + + //用私有方法给时间机,防止有什么奇怪的幺蛾子 + private void Self_Update() + { + XUpdate(); + } + private void Self_LateUpdate() + { + XLateUpdate(); + } + + protected virtual void XUpdate() + { + + } + + protected virtual void XLateUpdate() + { + + } + + /// + /// 打开UI时收到的消息 + /// + /// + public virtual void OnOpenUIMessage(System.Object param) + { + + } + + public virtual void OnCloseUIMessage(System.Object param) + { + + } + + + #endregion + + #region 安全的事件 + + + private List mEventPool = new List(); + + /// + /// 注册事件 + /// + /// 事件名 + /// 事件回调 + protected void EventRegister(string eventName,System.Action callback) + { + mEventPool.Add(XEvent.Register(eventName, callback)); + } + + /// + /// 注册事件 + /// + /// 事件名 + /// 事件回调 + protected void EventRegister(string eventName, System.Action callback) + { + mEventPool.Add(XEvent.Register(eventName, callback)); + } + + + #endregion + + #region UI操作 + + + + /// + /// 关掉自己 + /// + protected void CloseMe() + { + mUIEntity?.Close(); + } + + + + #endregion + + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIBase.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIBase.cs.meta new file mode 100644 index 0000000..b4540e6 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e99c79a65a3e260439085823f7f41ad8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs b/Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs new file mode 100644 index 0000000..5f1e716 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/* + * UIBase继承这个方法,使得一些Unity的魔法方法无法直接被子类重载。 + * 尽可能确保UIBase中的魔法方法被正确调用 + * + * + */ + +namespace TinaX.UIKit +{ + [DisallowMultipleComponent] + [RequireComponent(typeof(UIEntity))] + public class UIBaseSafer : MonoBehaviour + { + protected virtual void Awake() + { + + } + + protected virtual void Start() + { + + } + + protected virtual void OnDestroy() + { + + } + + + + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs.meta new file mode 100644 index 0000000..5326d2b --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIBaseSafer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d46b956d922e64746b62e451c6de741f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents.meta b/Assets/TinaX/Core/System/UIKit/Script/UIComponents.meta new file mode 100644 index 0000000..7666d90 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b3ded8547dcd3f41bc9b480203c8fa0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs new file mode 100644 index 0000000..774703f --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace TinaX.UIKit +{ + [DisallowMultipleComponent] + [AddComponentMenu("TinaX/UIKit/xButton")] + public class XButton : Button + { +#if UNITY_EDITOR + [MenuItem("GameObject/UI/xButton", false, 12)] + static void AddxText() + { + if (Selection.activeTransform != null) + { + var go_name = "xButton"; + if (Selection.activeTransform.Find(go_name) != null) + { + var index = 1; + + while (Selection.activeTransform.Find("xButton" + index.ToString()) != null) + { + index++; + } + go_name = "xButton" + index.ToString(); + } + var BtnGo = new GameObject(go_name).SetLayerRecursive(5); + var xImage = BtnGo.AddComponent(); + var xButton = BtnGo.AddComponent(); + BtnGo.transform.SetParent(Selection.activeTransform); + var rect_trans = BtnGo.GetComponent(); + rect_trans.anchoredPosition = Vector2.zero; + rect_trans.localScale = Vector3.one; + rect_trans.sizeDelta = new Vector2(200, 60); + xImage.color = new Color(55f/255f, 55f/255f, 55f/255f); + var GoText = new GameObject("Text").SetLayerRecursive(5); + var xText = GoText.AddComponent(); + GoText.transform.SetParent(BtnGo.transform); + var rect_txt = GoText.GetComponent(); + + rect_txt.anchorMin = Vector2.zero; + rect_txt.anchorMax = Vector2.one; + rect_txt.anchoredPosition = Vector2.zero; + rect_txt.sizeDelta = Vector2.zero; + xText.raycastTarget = false; + xText.alignment = TextAnchor.MiddleCenter; + xText.fontSize = 20; + xText.color = Color.white; + xText.text = "xButton"; + } + } +#endif + + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs.meta new file mode 100644 index 0000000..c8a3231 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e38ce174eabaa241b8c4b5b8d83e287 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs new file mode 100644 index 0000000..36e9013 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs @@ -0,0 +1,91 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using TinaX; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace TinaX.UIKit +{ + [DisallowMultipleComponent] + [AddComponentMenu("TinaX/UIKit/xImage")] + public class XImage : Image + { +#if UNITY_EDITOR + [MenuItem("GameObject/UI/xImage", false, 11)] + static void AddxText() + { + if (Selection.activeTransform != null) + { + var go_name = "xImage"; + if (Selection.activeTransform.Find(go_name) != null) + { + var index = 1; + + while (Selection.activeTransform.Find("xImage" + index.ToString()) != null) + { + index++; + } + go_name = "xImage" + index.ToString(); + } + var TextGo = new GameObject(go_name).SetLayerRecursive(5); + var xImage = TextGo.AddComponent(); + TextGo.transform.SetParent(Selection.activeTransform); + var rect_trans = TextGo.GetComponent(); + rect_trans.anchoredPosition3D = Vector2.zero; + rect_trans.localScale = Vector3.one; + rect_trans.sizeDelta = new Vector2(100, 100); + + Selection.activeTransform = TextGo.transform; + } + } +#endif + + //[HideInInspector] + private string mResPath; + + /// + /// 设置Image图片资源的路径[by 资源管理系统] + /// + /// 寻址路径 + /// 是否异步加载 + public void SetResPath(string res_path,bool async = false) + { + //检查当前是否已有资源 + if (!mResPath.IsNullOrEmpty()) + { + AssetsMgr.I.RemoveUse(mResPath); + } + + if (async) + { + //异步 + AssetsMgr.I.LoadAssetAsync(res_path, (s) => { + sprite = s; + }); + } + else + { + sprite = AssetsMgr.I.LoadAsset(res_path); + } + + mResPath = res_path; + } + + + protected override void OnDestroy() + { + base.OnDestroy(); + + //释放资源 + if (!mResPath.IsNullOrEmpty()) + { + AssetsMgr.I.RemoveUse(mResPath); + mResPath = null; + } + } + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs.meta new file mode 100644 index 0000000..b13a02f --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 608856c5a2024af409c6cda05cd838c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs new file mode 100644 index 0000000..7bea7da --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs @@ -0,0 +1,103 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace TinaX.UIKit +{ + [DisallowMultipleComponent] + [AddComponentMenu("TinaX/UIKit/xText")] + public class XText : Text + { + +#if UNITY_EDITOR + [MenuItem("GameObject/UI/xText",false,10)] + static void AddxText() + { + if (Selection.activeTransform != null) + { + var go_name = "xText"; + if (Selection.activeTransform.Find(go_name) != null) + { + var index = 1; + + while (Selection.activeTransform.Find("xText" + index.ToString()) != null) + { + index++; + } + go_name = "xText" + index.ToString(); + } + var TextGo = new GameObject(go_name).SetLayerRecursive(5); + var xText = TextGo.AddComponent(); + TextGo.transform.SetParent(Selection.activeTransform); + var rect_trans = TextGo.GetComponent(); + rect_trans.anchoredPosition = Vector2.zero; + rect_trans.localScale = Vector3.one; + rect_trans.sizeDelta = new Vector2(200, 60); + xText.text = "New xText"; + xText.fontSize = 20; + xText.raycastTarget = false; + Selection.activeTransform = TextGo.transform; + } + } +#endif + + /// + /// 是否启用I18N + /// + public bool UseI18N = false; + /// + /// I18N的Key值 + /// + public string I18NKey; + + public bool UseI18NInRumtime; + + + + + protected override void Awake() + { + base.Awake(); +#if UNITY_EDITOR + if (Application.isPlaying) + { + if (UseI18N && UseI18NInRumtime && I18NKey.Length > 0) + { + text = XI18N.I.GetString(I18NKey); + } + } + +#else + if (UseI18N && UseI18NInRumtime && I18NKey.Length >0) + { + text = XI18N.I.GetString(I18NKey); + } +#endif + + } + + + /// + /// 通过I18N key设置文字 + /// + /// key值 + /// 如果key不存在,使用此处缺省 + public void SetI18NKey(string key,string default_str = null) + { + var i18n_str = XI18N.I.GetString(key); + if (i18n_str == key && default_str != null) + { + text = default_str; + } + else{ + text = i18n_str; + } + } + + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs.meta new file mode 100644 index 0000000..8d47c6d --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XText.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebb3fb62c0c486943be7a5f25de9b1b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs new file mode 100644 index 0000000..7fcd92b --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs @@ -0,0 +1,100 @@ +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace TinaX.UIKit +{ + [DisallowMultipleComponent] + [AddComponentMenu("TinaX/UIKit/xUISafeArea")] + public class XUISafeArea : MonoBehaviour + { +#if UNITY_EDITOR + [MenuItem("GameObject/UI/xUISafeArea", false, 12)] + static void AddxUISafeArea() + { + var go_name = "xUISafeArea"; + if (Selection.activeTransform.Find(go_name) != null) + { + var index = 1; + + while (Selection.activeTransform.Find("xUISafeArea" + index.ToString()) != null) + { + index++; + } + go_name = "xUISafeArea" + index.ToString(); + } + if (Selection.activeTransform != null) + { + + var SafeAreaGo = new GameObject(go_name).SetLayerRecursive(5); + + var xSarea = SafeAreaGo.AddComponent(); + + SafeAreaGo.transform.SetParent(Selection.activeTransform); + var rect_trans = SafeAreaGo.GetComponentOrAdd(); + rect_trans.anchoredPosition3D = Vector3.zero; + rect_trans.localScale = Vector3.one; + rect_trans.anchorMin = Vector2.zero; + rect_trans.anchorMax = Vector2.one; + rect_trans.sizeDelta = Vector2.zero; + + } + + } +#endif + + [Header("背景图")] + public RectTransform BackGround; + + [Header("缩放背景")] + public bool ScaleBackground = false; + [Header("背景原始横纵比")] + public Vector2Int BgAspectRationDefine; + + private void Awake() + { + //检查UISafeArea + //UIKit.I.UISafeAreaManager.GetOffsetInfo(); + + //背景图ScaleBg + ScaleBg(); + } + + + private void ScaleBg() + { + if (BackGround == null) return; + if (BgAspectRationDefine.x == 0 || BgAspectRationDefine.y == 0) return; + + float screenAspectRation = (float)Screen.width / Screen.height; + float bgAspectRation = (float)BgAspectRationDefine.x / BgAspectRationDefine.y; + + + BackGround.anchorMin = new Vector2(0.5f, 0.5f); + BackGround.anchorMax = new Vector2(0.5f, 0.5f); + BackGround.anchoredPosition = Vector2.zero; + + + + var ui_root_rect = UIKit.I.UIKit_UIRoot_RectTrans; + var cur_ui_size = ui_root_rect.sizeDelta; + + if (screenAspectRation > bgAspectRation) + { + //屏幕比背景图要宽,优先用背景图宽度填满屏幕 + BackGround.sizeDelta = new Vector2(cur_ui_size.x, cur_ui_size.x / bgAspectRation); + } + else + { + //屏幕比背景图要狭窄,优先用背景图高度填满拼命 + BackGround.sizeDelta = new Vector2(cur_ui_size.y * bgAspectRation, cur_ui_size.y); + + } + + + + } + + } +} \ No newline at end of file diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs.meta new file mode 100644 index 0000000..5aec499 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIComponents/XUISafeArea.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 203ea13bceaddf84a837bc1d0615da90 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs b/Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs new file mode 100644 index 0000000..b1c3d6a --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs @@ -0,0 +1,318 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR && ODIN_INSPECTOR +using Sirenix.OdinInspector; +#endif + +namespace TinaX.UIKit +{ + [DisallowMultipleComponent] + [RequireComponent(typeof(Canvas))] + public class UIEntity : MonoBehaviour, IUIEntity + { + #region 配置 + + +#if UNITY_EDITOR && ODIN_INSPECTOR + private void OnHandleTypeChanged() + { + print("喵"); + if (!Application.isPlaying) + { +#if TinaX_CA_LuaRuntime_Enable + if (HandleType == E_MainHandleType.LuaBehaviour) + { + gameObject.GetComponentOrAdd().UIBehaviour = true; + } +#endif + } + } + [Header("主处理方式")] + [OnValueChanged("OnHandleTypeChanged",true)] +#endif + public E_MainHandleType HandleType = E_MainHandleType.UIBase; + + [Header("全屏UI")] + [Tooltip("打开全屏UI时会隐藏上一个全屏UI")] + public bool IsFullScreenUI; + + [Header("在隐藏时不要暂停")] + [Tooltip("如果为true,当本UI被隐藏时不会被暂停(SetActive(false)")] + public bool DontPauseWhenHide; + +#if UNITY_EDITOR && ODIN_INSPECTOR + [FoldoutGroup("高级模式")] + [Header("可同时打开多个")] + [InfoBox("如果勾选,在高级模式下可同时打开多个该UI")] +#endif + public bool MultiUI = false; + + #endregion + + private Canvas mCanvas; + private RectTransform rectTrans; + private string m_uiPath; + private string m_uiName; + + #region 高级模式 + + private int m_ID; //UI句柄ID + private UIEntity m_Parent; //父UI + private List m_childs = new List() ; //子UI + + #endregion + + /// + /// [高级模式]分配句柄ID + /// + /// + public void SetID(int id) + { + m_ID = id; + } + /// + /// [高级模式]获取句柄ID + /// + /// + public int GetID() + { + return m_ID; + } + + public void AddChild(UIEntity child) + { + + m_childs.Add(child); + } + + + + + + public int SetLayer(int layer) + { + mCanvas.sortingOrder = layer; + return mCanvas.sortingOrder; + } + + + public GameObject GetGameObject() + { + return gameObject; + } + + public string GetUIName() + { + return m_uiName; + } + + public string GetUIPath() + { + return m_uiPath; + } + + + #region UI操作 + + /// + /// 隐藏本UI + /// + /// + public IUIEntity Hide() + { + if (!UIKit.I.IsAdvanced) + { + UIKit.I.HideUIByPath(m_uiPath); + } + else + { + UIKit.I.HideUI(m_ID); + } + return this; + } + + public IUIEntity Show() + { + if (!UIKit.I.IsAdvanced) + { + UIKit.I.ShowUIByPath(m_uiPath); + } + else + { + UIKit.I.ShowUI(m_ID); + } + return this; + } + + public void Close() + { + if (!UIKit.I.IsAdvanced) + { + UIKit.I.CloseUIByPath(m_uiPath); + } + else + { + UIKit.I.CloseUI(m_ID); + } + + } + + + #endregion + + + #region 高级模式的UI操作 + + /// + /// 打开UI,在高级模式下,被打开的UI被认为是当前UI的子级UI + /// + /// UI名 + /// 附加参数 + public IUIEntity OpenUI(string ui_name,System.Object Param = null) + { + if (UIKit.I.IsAdvanced) + { +#if TinaX_CA_LuaRuntime_Enable + return UIKit.I.OpenUIChild(ui_name, m_ID, Param, null, false, false); +#else + return UIKit.I.OpenUIChild(ui_name, m_ID, Param, false, false); + +#endif + } + else + { + return UIKit.I.OpenUI(ui_name, Param); + } + } + +#endregion + + + +#region 事件们 + + + /// + /// 当UI创建后,由UI管理系统调用 + /// + public void OnUICreated(string ui_path, string ui_name = "unknow") + { + mCanvas = gameObject.GetComponent(); + rectTrans = gameObject.GetComponent(); + + transform.localScale = Vector3.one; + + rectTrans.anchorMax = Vector2.one; + rectTrans.anchorMin = Vector2.zero; + rectTrans.anchoredPosition = Vector2.zero; + + mCanvas.overrideSorting = true; + m_uiPath = ui_path; + m_uiName = ui_name; + + } + + /// + /// UI打开的附带参数 + /// + /// + public void OnUIOpenMessage(System.Object param) + { + if (HandleType == E_MainHandleType.UIBase) + { + var uiBase = gameObject.GetComponent(); + if (uiBase != null) + { + uiBase.OnOpenUIMessage(param); + } + } +#if TinaX_CA_LuaRuntime_Enable + else if (HandleType == E_MainHandleType.LuaBehaviour) + { + var luabehaviour = gameObject.GetComponent(); + if (luabehaviour != null) + { + luabehaviour.OnUIOpenMessage(param); + } + } +#endif + } + +#if TinaX_CA_LuaRuntime_Enable + /// + /// UI打开的附带参数(lua) + /// + /// + public void OnUIOpenMessage_LuaTable(XLua.LuaTable table) + { + var luabehaviour = gameObject.GetComponent(); + if (luabehaviour != null) + { + luabehaviour.OnUIOpenMessage_LuaTable(table); + } + } +#endif + + /// + /// 关闭UI的附带参数 + /// + /// + public void OnUICloseMessage(System.Object param) + { + if (HandleType == E_MainHandleType.UIBase) + { + var uiBase = gameObject.GetComponent(); + if (uiBase != null) + { + uiBase.OnCloseUIMessage(param); + } + } +#if TinaX_CA_LuaRuntime_Enable + else if (HandleType == E_MainHandleType.LuaBehaviour) + { + var luabehaviour = gameObject.GetComponent(); + if (luabehaviour != null) + { + luabehaviour.OnUICloseMessage(param); + } + } +#endif + } + +#if TinaX_CA_LuaRuntime_Enable + /// + /// 关闭UI的附带参数 Lua table + /// + /// + public void OnUICloseMessage_LuaTable(XLua.LuaTable table) + { + var luabehaviour = gameObject.GetComponent(); + if (luabehaviour != null) + { + luabehaviour.OnUICloseMessage_LuaTable(table); + } + } + +#endif + +#endregion + + + /// + /// UI主处理方法类型 + /// + public enum E_MainHandleType + { + UIBase, +#if TinaX_CA_LuaRuntime_Enable + LuaBehaviour +#endif + } + + } + + + +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs.meta new file mode 100644 index 0000000..4b5e762 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIEntity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89f7190943f852741bdd61498d7b7df7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs b/Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs new file mode 100644 index 0000000..4e3359f --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TinaX.UIKit; +using CatLib; + +namespace TinaX.UIKit +{ + + + public class UIKit : Facade + { + public static IUIMgr I + { + get + { + return Instance; + } + } + } +} + +namespace TinaX.Cat +{ + public class UIProvide : IServiceProvider + { + public void Init() + { + + } + + public void Register() + { + App.Singleton().Alias(); + } + } +} diff --git a/Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs.meta new file mode 100644 index 0000000..d0fc39c --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UIProvide.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5190e8448ddb54e4f95359714cbce73b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UISafeArea.meta b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea.meta new file mode 100644 index 0000000..c3f7013 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7e94a7370bc7f14ea62fae3411a1066 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs new file mode 100644 index 0000000..a9c17ca --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs @@ -0,0 +1,113 @@ +/* + * 设计上,本class不直接暴露给开发者 + * 本class由XUIMgrGateway管理 + * + */ + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Newtonsoft.Json; + +namespace TinaX.UIKit +{ + + public class XUISafeAreaMgr + { + private UIKitConfig mUIConfig; + private bool mIsEnable; + + private XUISafeAreaModel mModel; + private XUISafeAreaItemModel mCurDeviceInfo; + + + public XUISafeAreaMgr() + { + mUIConfig = TinaX.Config.GetTinaXConfig(Conf.ConfigPath.uikit); + if (mUIConfig == null) + { + mUIConfig = new UIKitConfig(); + mUIConfig.Enable_UISafeArea = false; + mIsEnable = false; + } + + + + mModel = LoadConfigFile(); + mCurDeviceInfo = mModel.CurDeviceInfo; + + } + + /// + /// 启用UI安全区 + /// + public XUISafeAreaMgr Enable() + { + if (mIsEnable) + { + return this; + } + + mIsEnable = true; + return this; + } + + /// + /// 停用UI安全区 + /// + public void Disable() + { + if (!mIsEnable) + { + return; + } + + mIsEnable = false; + } + + + public void GetOffsetInfo() + { + + } + + + #region IO + + private XUISafeAreaModel LoadConfigFile() + { + string config_json; + if (mUIConfig.UISafeArea_LoadByVFS) + { + config_json = TinaX.AssetsMgr.I.LoadAsset(mUIConfig.UI_SafeArea_Json)?.text; + } + else + { + config_json = Resources.Load(mUIConfig.UI_SafeArea_Json)?.text; + } + if (config_json.IsNullOrEmpty()) + { + return null; + } + + return JsonConvert.DeserializeObject(config_json); + + } + + + #endregion + + + + #region Data Read/Write + + + + + #endregion + + + + } + +} diff --git a/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs.meta new file mode 100644 index 0000000..ada77a3 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6058e23c7c92bd44d88159656064ceda +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs new file mode 100644 index 0000000..2bccd5c --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace TinaX.UIKit +{ + //UIKit UISafeArea 数据模型 + + [JsonObject] + public class XUISafeAreaModel + { + [JsonProperty(PropertyName ="data")] + public List Data; + + public XUISafeAreaItemModel CurDeviceInfo + { + get + { + if (!flag) + { + mCurDeviceInfo = GetCurDeviceInfo(); + } + return mCurDeviceInfo; + } + } + + + private bool flag = false; //是否查询过设备信息的标记 + + /// + /// 当前设备信息 + /// + private XUISafeAreaItemModel mCurDeviceInfo; + + /// + /// 获取当前设备信息 + /// + /// + private XUISafeAreaItemModel GetCurDeviceInfo() + { + var myDeviceName = UnityEngine.SystemInfo.deviceModel; + foreach(var item in Data) + { + if (item.EnableRegular) + { + //正则匹配 + if (Regex.IsMatch(myDeviceName, item.Device_RegularStr)) + { + return item; + } + } + else + { + if(item.Device_name == myDeviceName) + { + return item; + } + } + } + return default(XUISafeAreaItemModel); + } + + } + + + public struct XUISafeAreaItemModel + { + /// + /// 设备名 + /// + [JsonProperty(PropertyName = "device_name")] + public string Device_name { get; set; } + /// + /// 厂商名 品牌名 + /// + [JsonProperty(PropertyName = "brand")] + public string BrandName { get; set; } + /// + /// 是否启用正则匹配设备名 + /// + [JsonProperty(PropertyName = "regular")] + public bool EnableRegular { get; set; } + + /// + /// 设备名正则表达式 + /// + [JsonProperty(PropertyName = "device_regular")] + public string Device_RegularStr { get; set; } + + /// + /// 是否为畸形屏幕 + /// + [JsonProperty(PropertyName = "abnormal")] + public bool IsAbnormal { get; set; } + + /// + /// 设备顶部缩进 + /// + [JsonProperty(PropertyName = "top")] + public int Top { get; set; } + + /// + /// 设备底部缩进 + /// + [JsonProperty(PropertyName = "bottom")] + public int Bottom { get; set; } + + /// + /// 设备左边 + /// + [JsonProperty(PropertyName = "left")] + public int Left { get; set; } + + /// + /// 设备右边 + /// + [JsonProperty(PropertyName = "right")] + public int Right { get; set; } + + } + +} diff --git a/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs.meta new file mode 100644 index 0000000..021e070 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/UISafeArea/XUISafeAreaModel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cddd31c50366c5b499f9a813475db80c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs b/Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs new file mode 100644 index 0000000..3f0043a --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs @@ -0,0 +1,329 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using TinaX.Conf; +using TinaX; + +namespace TinaX.UIKit +{ + public class XUIManager + { + private XUIMgrGateway mGateway; + /// + /// 简单模式的UI对象存储池 + /// key为UI路径 + /// + private Dictionary mUIPool = new Dictionary(); + + + + public XUIManager(XUIMgrGateway _Gateway) + { + mGateway = _Gateway; + + } + + +#if TinaX_CA_LuaRuntime_Enable + /// + /// 打开UI + /// + public IUIEntity OpenUI(string ui_name,bool use_mask, bool close_by_mask, System.Object OpenParam = null, XLua.LuaTable LuaParam = null) + { + //ui_name to ui_path + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]打开UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return null; + } + + return POpenUI(uiPath, use_mask, close_by_mask, ui_name,OpenParam,LuaParam); + } + +#else + + /// + /// 打开UI + /// + public IUIEntity OpenUI(string ui_name, bool use_mask, bool close_by_mask, System.Object OpenParam = null) + { + //ui_name to ui_path + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]打开UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return null; + } + + return POpenUI(uiPath, use_mask, close_by_mask, ui_name, OpenParam); + } +#endif + +#if TinaX_CA_LuaRuntime_Enable + public IUIEntity OpenUIByPath(string ui_path, bool use_mask, bool close_by_mask, System.Object OpenParam = null, XLua.LuaTable LuaParam = null) + { + return POpenUI(ui_path, use_mask, close_by_mask, "unknow", OpenParam, LuaParam); + } +#else + public IUIEntity OpenUIByPath(string ui_path, bool use_mask, bool close_by_mask, System.Object OpenParam = null) + { + return POpenUI(ui_path, use_mask, close_by_mask, "unknow", OpenParam); + } + +#endif + + +#if TinaX_CA_LuaRuntime_Enable + public void CloseUI(string ui_name, System.Object close_param = null, XLua.LuaTable LuaParam = null) + { + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]关闭UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return; + } + + PCloseUI(uiPath, close_param: close_param,lua_close_param:LuaParam); + } + +#else + public void CloseUI(string ui_name, System.Object close_param = null) + { + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]关闭UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return; + } + + PCloseUI(uiPath, close_param: close_param); + } +#endif + + +#if TinaX_CA_LuaRuntime_Enable + public void CloseUIByPath(string ui_path, System.Object close_param = null, XLua.LuaTable LuaParam = null) + { + PCloseUI(ui_path, close_param: close_param, lua_close_param: LuaParam); + } +#else + public void CloseUIByPath(string ui_path, System.Object close_param = null) + { + PCloseUI(ui_path, close_param: close_param); + } +#endif + + public void ShowUI(string ui_name) + { + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]操作UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return; + } + + PShowUI(uiPath); + } + + public void ShowUIByPath(string ui_path) + { + PShowUI(ui_path); + } + + public void HideUI(string ui_name) + { + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]操作UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return; + } + + PHideUI(uiPath); + } + + public void HideUIByPath(string ui_path) + { + PHideUI(ui_path); + } + + #region 私有方法_UI操作 + +#if TinaX_CA_LuaRuntime_Enable + /// + /// 打开UI + /// + /// UI路径 + private IUIEntity POpenUI(string ui_path,bool use_mask, bool close_by_mask, string uiName = "unknow", System.Object OpenParam = null, XLua.LuaTable LuaParam = null) + { + //检查UI对象是否已存在 + if (mUIPool.ContainsKey(ui_path)) + { + //存在,直接置顶 + + return mUIPool[ui_path].GetUIEntityAPI(); + } + else + { + //不存在,打开流程 + var ui_prefab = AssetsMgr.I.LoadAsset(ui_path); + //创建UI对象 + var ui_item = new UIItem(ui_prefab, ui_path, mGateway); + //初始化UI + ui_item.InitUI(); //UI对象内部自己处理层级 + //遮罩处理 + if (use_mask) + { + ui_item.UseMask(close_by_mask); + } + //记录UI + mUIPool.Add(ui_path, ui_item); + + //处理Entity的事件 + ui_item.GetUIEntity().OnUICreated(ui_path, uiName); + //处理打开UI参数传递 + if (OpenParam != null) + { + ui_item.GetUIEntity().OnUIOpenMessage(OpenParam); + } + + if (LuaParam != null) + { + ui_item.GetUIEntity().OnUIOpenMessage_LuaTable(LuaParam); + } + + + //返回 + return ui_item.GetUIEntityAPI(); + } + + + + } + +#else + /// + /// 打开UI + /// + /// UI路径 + private IUIEntity POpenUI(string ui_path, bool use_mask, bool close_by_mask, string uiName = "unknow", System.Object OpenParam = null) + { + //检查UI对象是否已存在 + if (mUIPool.ContainsKey(ui_path)) + { + //存在,直接置顶 + + return mUIPool[ui_path].GetUIEntityAPI(); + } + else + { + //不存在,打开流程 + var ui_prefab = AssetsMgr.I.LoadAsset(ui_path); + //创建UI对象 + var ui_item = new UIItem(ui_prefab, ui_path, mGateway); + //初始化UI + ui_item.InitUI(); //UI对象内部自己处理层级 + //遮罩处理 + if (use_mask) + { + ui_item.UseMask(close_by_mask); + } + //记录UI + mUIPool.Add(ui_path, ui_item); + + //处理Entity的事件 + ui_item.GetUIEntity().OnUICreated(ui_path, uiName); + //处理打开UI参数传递 + if (OpenParam != null) + { + ui_item.GetUIEntity().OnUIOpenMessage(OpenParam); + } + + + //返回 + return ui_item.GetUIEntityAPI(); + } + + + + } +#endif + +#if TinaX_CA_LuaRuntime_Enable + private void PCloseUI(string ui_path, System.Object close_param = null, XLua.LuaTable lua_close_param = null) + { + //UI是否存在 + if (mUIPool.ContainsKey(ui_path)) + { + //存在 + if (close_param != null) + { + mUIPool[ui_path].GetUIEntity().OnUICloseMessage(close_param); + } + + if (lua_close_param != null) + { + mUIPool[ui_path].GetUIEntity().OnUICloseMessage_LuaTable(lua_close_param); + } + + + mUIPool[ui_path].CloseUI(); + + //打扫一下现场 + mUIPool.Remove(ui_path); + } + } +#else + private void PCloseUI(string ui_path, System.Object close_param = null) + { + //UI是否存在 + if (mUIPool.ContainsKey(ui_path)) + { + //存在 + if (close_param != null) + { + mUIPool[ui_path].GetUIEntity().OnUICloseMessage(close_param); + } + + + + + mUIPool[ui_path].CloseUI(); + + //打扫一下现场 + mUIPool.Remove(ui_path); + } + } +#endif + + private void PHideUI(string ui_path) + { + PGetUIEntityAPI(ui_path)?.GetGameObject().Hide(); + } + + private void PShowUI(string ui_path) + { + PGetUIEntityAPI(ui_path)?.GetGameObject().Show(); + } + + private IUIEntity PGetUIEntityAPI(string ui_path) + { + if (mUIPool.ContainsKey(ui_path)) + { + return mUIPool[ui_path].GetUIEntityAPI(); + } + else + { + return null; + } + } +#endregion + + + + + } +} + diff --git a/Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs.meta new file mode 100644 index 0000000..e95129e --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/XUIManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ca023512c1ed97448b1b078882adc1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs b/Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs new file mode 100644 index 0000000..cbdee5b --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs @@ -0,0 +1,321 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Collections.Generic; +using TinaX; + + +namespace TinaX.UIKit +{ + /// + /// Advanced 高级UI管理器 + /// + public class XUIManagerAdv + { + private XUIMgrGateway mGateway; + + /// + /// 简单模式的UI对象存储池 + /// 路径与UI不完全一一对应, + /// 使用句柄ID作为Key + /// + private Dictionary mUIPool = new Dictionary(); + + public XUIManagerAdv(XUIMgrGateway _Gateway) + { + mGateway = _Gateway; + } + +#if TinaX_CA_LuaRuntime_Enable + + public IUIEntity OpenUI(string ui_name, bool use_mask, bool close_by_mask,int ParentID = -1, System.Object OpenParam = null, XLua.LuaTable LuaParam = null) + { + //ui_name to ui_path + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]打开UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return null; + } + + return POpenUI(uiPath, use_mask, close_by_mask, ParentID, ui_name,OpenParam,LuaParam); + + } + +#else + public IUIEntity OpenUI(string ui_name, bool use_mask, bool close_by_mask, int ParentID = -1, System.Object OpenParam = null) + { + //ui_name to ui_path + var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name); + if (uiPath.IsNullOrEmpty()) + { + XLog.PrintE("[TinaX][UIKit]打开UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径"); + return null; + } + + return POpenUI(uiPath, use_mask, close_by_mask, ParentID, ui_name, OpenParam); + + } + +#endif + + +#if TinaX_CA_LuaRuntime_Enable + public IUIEntity OpenUIByPath(string ui_path, bool use_mask, bool close_by_mask, int ParentID = -1, System.Object OpenParam = null, XLua.LuaTable LuaParam = null) + { + return POpenUI(ui_path, use_mask, close_by_mask, ParentID, "unknow", OpenParam, LuaParam); + } + +#else + public IUIEntity OpenUIByPath(string ui_path, bool use_mask, bool close_by_mask, int ParentID = -1, System.Object OpenParam = null) + { + return POpenUI(ui_path, use_mask, close_by_mask, ParentID, "unknow", OpenParam); + } +#endif + + +#if TinaX_CA_LuaRuntime_Enable + public void CloseUI(int id, System.Object close_param = null, XLua.LuaTable LuaParam = null) + { + PCloseUI(id, close_param: close_param,lua_close_param:LuaParam); + } +#else + public void CloseUI(int id, System.Object close_param = null) + { + PCloseUI(id, close_param: close_param); + } +#endif + + public void HideUI(int id) + { + PHideUI(id); + } + + public void ShowUI(int id) + { + PShowUI(id); + } + + #region 私有方法_UI操作 + +#if TinaX_CA_LuaRuntime_Enable + private IUIEntity POpenUI(string ui_path, bool use_mask,bool close_by_mask, int ParentID = -1,string uiName = "unknow",System.Object OpenParam = null,XLua.LuaTable LuaParam = null) + { + //先找找这个UI在不在 + foreach(var item in mUIPool) + { + if(item.Value.UIPath == ui_path) + { + //存在了 + if (!item.Value.IsMultiUI) + { + //置顶UI并返回 + + return item.Value.GetUIEntityAPI(); + } + break; + } + } + + //走到这儿就说明肯定得新建UI了 + var ui_prefab = AssetsMgr.I.LoadAsset(ui_path); + //创建UI对象 + var ui_item = new UIItem(ui_prefab, ui_path, mGateway); + //初始化UI + ui_item.InitUI(); //UI对象内部自己处理层级 + //分配ID + var ui_id = GetFreeUIPoolID(); + ui_item.SetID(ui_id); + //如有父UI,记录 + if(ParentID != -1) + { + if (mUIPool.ContainsKey(ParentID)) + { + mUIPool[ParentID].AddChild(ui_item.GetUIEntity()); + } + } + + //遮罩处理 + if (use_mask) + { + ui_item.UseMask(close_by_mask); + } + + //记录UI + mUIPool.Add(ui_id, ui_item); + + //处理Entity的事件 + ui_item.GetUIEntity().OnUICreated(ui_path, uiName); + //处理打开UI参数传递 + if(OpenParam != null) + { + ui_item.GetUIEntity().OnUIOpenMessage(OpenParam); + } + + if(LuaParam != null) + { + ui_item.GetUIEntity().OnUIOpenMessage_LuaTable(LuaParam); + } + + + + //返回 + return ui_item.GetUIEntityAPI(); + + } + +#else + private IUIEntity POpenUI(string ui_path, bool use_mask, bool close_by_mask, int ParentID = -1, string uiName = "unknow", System.Object OpenParam = null) + { + //先找找这个UI在不在 + foreach (var item in mUIPool) + { + if (item.Value.UIPath == ui_path) + { + //存在了 + if (!item.Value.IsMultiUI) + { + //置顶UI并返回 + + return item.Value.GetUIEntityAPI(); + } + break; + } + } + + //走到这儿就说明肯定得新建UI了 + var ui_prefab = AssetsMgr.I.LoadAsset(ui_path); + //创建UI对象 + var ui_item = new UIItem(ui_prefab, ui_path, mGateway); + //初始化UI + ui_item.InitUI(); //UI对象内部自己处理层级 + //分配ID + var ui_id = GetFreeUIPoolID(); + ui_item.SetID(ui_id); + //如有父UI,记录 + if (ParentID != -1) + { + if (mUIPool.ContainsKey(ParentID)) + { + mUIPool[ParentID].AddChild(ui_item.GetUIEntity()); + } + } + + //遮罩处理 + if (use_mask) + { + ui_item.UseMask(close_by_mask); + } + + //记录UI + mUIPool.Add(ui_id, ui_item); + + //处理Entity的事件 + ui_item.GetUIEntity().OnUICreated(ui_path, uiName); + //处理打开UI参数传递 + if (OpenParam != null) + { + ui_item.GetUIEntity().OnUIOpenMessage(OpenParam); + } + + + //返回 + return ui_item.GetUIEntityAPI(); + + } +#endif + +#if TinaX_CA_LuaRuntime_Enable + //关闭UI + private void PCloseUI(int id,System.Object close_param = null, XLua.LuaTable lua_close_param = null) + { + //UI是否存在 + if (mUIPool.ContainsKey(id)) + { + //有,关吧 + //“你还有什么话要说吗” + if(close_param != null) + { + //"我有话说" + mUIPool[id].GetUIEntity().OnUICloseMessage(close_param); + } + + if(lua_close_param != null) + { + mUIPool[id].GetUIEntity().OnUICloseMessage_LuaTable(lua_close_param); + } + + + //“说完了,那就上路吧” + mUIPool[id].CloseUI(); + + //打扫一下现场 + mUIPool.Remove(id); + } + } + +#else + //关闭UI + private void PCloseUI(int id, System.Object close_param = null) + { + //UI是否存在 + if (mUIPool.ContainsKey(id)) + { + //有,关吧 + //“你还有什么话要说吗” + if (close_param != null) + { + //"我有话说" + mUIPool[id].GetUIEntity().OnUICloseMessage(close_param); + } + + + //“说完了,那就上路吧” + mUIPool[id].CloseUI(); + + //打扫一下现场 + mUIPool.Remove(id); + } + } +#endif + + + private void PHideUI(int id) + { + PGetUIEntityAPI(id)?.GetGameObject().Hide(); + } + + private void PShowUI(int id) + { + PGetUIEntityAPI(id)?.GetGameObject().Show(); + } + + private IUIEntity PGetUIEntityAPI(int id) + { + if (mUIPool.ContainsKey(id)) + { + return mUIPool[id].GetUIEntityAPI(); + } + return null; + } + +#endregion + +#region UIPool_ID处理 + + private int GetFreeUIPoolID() //获取一个可用的空闲ID + { + int id = UnityEngine.Random.Range(9, 999); + while (mUIPool.ContainsKey(id)) + { + id++; + } + return id; + } + + +#endregion + + } + +} diff --git a/Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs.meta b/Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs.meta new file mode 100644 index 0000000..853a12d --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/XUIManagerAdv.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccd4b0a300c79694bb92369a7c5e8512 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TinaX/Core/System/UIKit/Script/XUIMgrGateway.cs b/Assets/TinaX/Core/System/UIKit/Script/XUIMgrGateway.cs new file mode 100644 index 0000000..8878557 --- /dev/null +++ b/Assets/TinaX/Core/System/UIKit/Script/XUIMgrGateway.cs @@ -0,0 +1,952 @@ +using UnityEngine; +using System; +using System.Collections.Generic; +using System.Collections; +using UnityEngine.UI; +using TinaX.Conf; +using TinaX; + +namespace TinaX.UIKit +{ + /// + /// UI管理器 入口 + /// + public class XUIMgrGateway:IUIMgr + { + /// + /// 管理器模式; 0: 简单模式 1:高级模式 + /// + private int m_ManagerMode = 0; + + private XUIManager m_UIMgr_Normal; //简单模式,UI管理器 + private XUIManagerAdv m_UIMgr_Adv; //高级模式,UI管理器 + private UIMaskMgr m_UIMaskMgr; //UI遮罩管理 + private UILayerMgr m_UILayerMgr; //UI层级管理器 + private Canvas mUIRootCanvas; //UIRoot Canvas + private Transform mUIRootTrans; + private RectTransform mUIRootRectTrans; + + + private UIKitConfig mConfig; + private UIGroupConf mDefaultUIGroup; + + #region UISafeArea + + private XUISafeAreaMgr mUISafeAreaMgr; + + #endregion + + /// + /// 初始化 + /// + public XUIMgrGateway() + { + mConfig = TinaX.Config.GetTinaXConfig(ConfigPath.uikit); + if (mConfig == null) + { + mConfig = new UIKitConfig(); + mConfig.Use_AdvancedMode = false; + } + + mDefaultUIGroup = mConfig.Default_UIGroup; + + //初始化GameObject相关 + Init_GameObjects(); + //初始化UIMask + m_UIMaskMgr = null; + m_UIMaskMgr = new UIMaskMgr(mUIRootTrans,mConfig.MaskColor,this); + m_UILayerMgr = null; + m_UILayerMgr = new UILayerMgr(this); + + if (mConfig.Use_AdvancedMode) + { + //高级模式 + m_ManagerMode = 1; + m_UIMgr_Adv = null; + m_UIMgr_Adv = new XUIManagerAdv(this); + } + else + { + //简单模式 + m_ManagerMode = 0; + m_UIMgr_Normal = null; + m_UIMgr_Normal = new XUIManager(this); + } + + #region UISafeArea + + if (mConfig.Enable_UISafeArea) + { + mUISafeAreaMgr = new XUISafeAreaMgr() + .Enable(); + + } + + #endregion + + } + + ~XUIMgrGateway() + { + if(mUISafeAreaMgr != null) + { + mUISafeAreaMgr.Disable(); + mUISafeAreaMgr = null; + } + } + + + private void Init_GameObjects() + { + var TinaXRoot = GameObjectHelper.FindOrCreateGo(Setup.Framework_Base_GameObject); + var Go_UIKit = TinaXRoot.FindOrCreateGo(UIKitConst.UIKit_RootGameObject_Name); + var Go_UIKit_Root = Go_UIKit.FindOrCreateGo(UIKitConst.UIKit_UIRootGameObject_Name); + var Go_UIKit_Camera = Go_UIKit.FindOrCreateGo(UIKitConst.UIKit_UICameraGameObject_Name); + + #region UICamera_Create + + var camera = Go_UIKit_Camera.GetComponentOrAdd(); + camera.clearFlags = CameraClearFlags.Depth; + camera.cullingMask = 1 << 5; + camera.orthographic = true; + camera.depth = 99; + camera.allowHDR = false; + camera.allowMSAA = false; + + + #endregion + + + #region UIRoot_Create + Go_UIKit_Root.layer = 5; + + var canvas = Go_UIKit_Root.GetComponentOrAdd(); + mUIRootCanvas = canvas; + canvas.renderMode = RenderMode.ScreenSpaceCamera; + canvas.worldCamera = camera; + + var _canvas_scaler = Go_UIKit_Root.GetComponentOrAdd(); + _canvas_scaler.uiScaleMode = mConfig.Canvas_Scale_Mode; + _canvas_scaler.referenceResolution = mConfig.UISize; + _canvas_scaler.screenMatchMode = mConfig.ScreenMatchMode; + _canvas_scaler.matchWidthOrHeight = mConfig.Match; + + _canvas_scaler.scaleFactor = mConfig.ScaleFactor; + _canvas_scaler.referencePixelsPerUnit = mConfig.referencePixelsPerUnit; + _canvas_scaler.physicalUnit = mConfig.physicalUnit; + + + var _gr = Go_UIKit_Root.GetComponentOrAdd(); + _gr.ignoreReversedGraphics = true; + + #endregion + + + mUIRootTrans = Go_UIKit_Root.transform; + mUIRootRectTrans = Go_UIKit_Root.GetComponent(); + + #region EventSystem + var ESGo = GameObjectHelper.FindOrCreateGo("EventSystem"); + var esObj = ESGo.GetComponentOrAdd(); + esObj.sendNavigationEvents = true; + esObj.pixelDragThreshold = 10; + var sim = ESGo.GetComponentOrAdd(); + ESGo.DontDestroy(); + + #endregion + + } + + + + /// + /// UI管理器是否为高级模式 + /// + public bool IsAdvanced + { + get + { + return m_ManagerMode == 1; + } + } + + public UIKitConfig UIKit_Config + { + get + { + return mConfig; + } + } + + public UILayerMgr UIKit_LayerMgr + { + get + { + return m_UILayerMgr; + } + } + + public Transform UIKit_UIRoot_Trans + { + get + { + //if (mUIRootTrans == null) + //{ + // Debug.Log("诶呀"); + //} + return mUIRootTrans; + } + } + + public UIGroupConf UIKit_DefaultUIGroup + { + get + { + return mDefaultUIGroup; + } + } + + public UIMaskMgr UIKit_MaskMgr + { + get + { + return m_UIMaskMgr; + } + } + + + public RectTransform UIKit_UIRoot_RectTrans + { + get + { + return mUIRootRectTrans; + } + } + + public XUISafeAreaMgr UISafeAreaManager + { + get + { + return mUISafeAreaMgr; + } + } + + + public IUIEntity OpenUI(string ui_name) + { + return this.OpenUI(ui_name, null); + } + + + public IUIEntity OpenUI(string ui_name, System.Object ui_param) + { + if (IsAdvanced) + { + //高级模式 + return m_UIMgr_Adv.OpenUI(ui_name, false, false,OpenParam:ui_param); + } + else + { + return m_UIMgr_Normal.OpenUI(ui_name, false, false,OpenParam:ui_param); + } + } + + /// + /// 打开UI + /// + public IUIEntity OpenUI(string ui_name,bool use_mask, bool close_by_mask) + { + if (IsAdvanced) + { + //高级模式 + return m_UIMgr_Adv.OpenUI(ui_name,use_mask,close_by_mask); + } + else + { + return m_UIMgr_Normal.OpenUI(ui_name, use_mask, close_by_mask); + } + } + + public IUIEntity OpenUI(string ui_name, System.Object ui_param, bool use_mask, bool close_by_mask = false) + { + if (IsAdvanced) + { + //高级模式 + return m_UIMgr_Adv.OpenUI(ui_name, use_mask, close_by_mask,OpenParam:ui_param); + } + else + { + return m_UIMgr_Normal.OpenUI(ui_name, use_mask, close_by_mask, OpenParam: ui_param); + } + } + +#if TinaX_CA_LuaRuntime_Enable + + //Lua层会有封装,所以这里传入的参数可以搞的很多,不用考虑用户体验 + + [XLua.LuaCallCSharp] + public IUIEntity OpenUIWhitLuaParam(string ui_name, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask) + { + if (IsAdvanced) + { + //高级模式 + return m_UIMgr_Adv.OpenUI(ui_name, use_mask, close_by_mask, LuaParam:lua_param); + } + else + { + return m_UIMgr_Normal.OpenUI(ui_name, use_mask, close_by_mask, LuaParam: lua_param); + } + } +#endif + + //用Path打开,目前版本是不推荐的,只是遵循传统留下这么个接口,不太考虑用户体验的,所有参数都堆过来呗 + public IUIEntity OpenUIByPath(string ui_path, System.Object ui_param, bool use_mask, bool close_by_mask = false) + { + if (IsAdvanced) + { + //高级模式 + return m_UIMgr_Adv.OpenUIByPath(ui_path, use_mask, close_by_mask,OpenParam: ui_param); + } + else + { + return m_UIMgr_Normal.OpenUIByPath(ui_path, use_mask, close_by_mask, OpenParam: ui_param); + } + } + +#if TinaX_CA_LuaRuntime_Enable + public IUIEntity OpenUIByPathWhitLuaParam(string ui_path, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask = false) + { + if (IsAdvanced) + { + //高级模式 + return m_UIMgr_Adv.OpenUIByPath(ui_path, use_mask, close_by_mask, LuaParam: lua_param); + } + else + { + return m_UIMgr_Normal.OpenUIByPath(ui_path, use_mask, close_by_mask, LuaParam: lua_param); + } + } + +#endif + +#if TinaX_CA_LuaRuntime_Enable + public IUIEntity OpenUIChild(string ui_name,int parent_id, System.Object ui_param, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask = false) + { + if (IsAdvanced) + { + return m_UIMgr_Adv.OpenUI(ui_name, use_mask, close_by_mask, parent_id, ui_param, lua_param); + } + else + { + XLog.PrintW("[TinaX][UIKit]当前UI系统不是高级模式,但被尝试用高级模式父子级UI功能"); + return null; + } + } + +#else + public IUIEntity OpenUIChild(string ui_name, int parent_id, System.Object ui_param, bool use_mask, bool close_by_mask = false) + { + if (IsAdvanced) + { + return m_UIMgr_Adv.OpenUI(ui_name, use_mask, close_by_mask, parent_id, ui_param); + } + else + { + XLog.PrintW("[TinaX][UIKit]当前UI系统不是高级模式,但被尝试用高级模式父子级UI功能"); + return null; + } + } +#endif + + public void CloseUI(string ui_name,System.Object Param = null) + { + if (IsAdvanced) + { + //高级模式下,不可用UI名关闭UI + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI名称关闭UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.CloseUI(ui_name, close_param: Param); + } + } + + public void CloseUI(int ui_id, System.Object Param = null) + { + if (IsAdvanced) + { + m_UIMgr_Adv.CloseUI(ui_id,close_param:Param); + } + else + { + XLog.PrintW("[TinaX][UIKit]当前UI系统不是高级模式,但被尝试用高级模式的 ID 形式关闭UI"); + return; + } + } + + public void CloseUIByPath(string ui_path, System.Object Param = null) + { + if (IsAdvanced) + { + //高级模式下,不可用UI名关闭UI + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI路径关闭UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.CloseUIByPath(ui_path, close_param: Param); + } + } + +#if TinaX_CA_LuaRuntime_Enable + public void CloseUIWithLuaParam(string ui_name,XLua.LuaTable luaParam) + { + if (IsAdvanced) + { + //高级模式下,不可用UI名关闭UI + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI名称操作UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.CloseUI(ui_name, LuaParam: luaParam); + } + } + + + + public void CloseUIByPathWithLuaParam(string ui_path, XLua.LuaTable luaParam) + { + if (IsAdvanced) + { + //高级模式下,不可用UI名关闭UI + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI名称操作UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.CloseUIByPath(ui_path, LuaParam: luaParam); + } + } + + public void CloseUIWithLuaParam(int ui_id, XLua.LuaTable luaParam) + { + if (IsAdvanced) + { + m_UIMgr_Adv.CloseUI(ui_id, LuaParam:luaParam); + } + else + { + XLog.PrintW("[TinaX][UIKit]当前UI系统不是高级模式,但被尝试用高级模式的 ID 形式操作UI"); + return; + } + } + +#endif + + public void HideUI(string ui_name) + { + if (IsAdvanced) + { + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI名称操作UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.HideUI(ui_name); + } + } + + public void HideUIByPath(string ui_path) + { + if (IsAdvanced) + { + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI路径操作UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.HideUIByPath(ui_path); + } + } + + + public void HideUI(int ui_id) + { + if (IsAdvanced) + { + m_UIMgr_Adv.HideUI(ui_id); + } + else + { + XLog.PrintW("[TinaX][UIKit]仅在高级模式下,可使用句柄ID操作UI"); + return; + } + } + + + public void ShowUI(string ui_name) + { + if (IsAdvanced) + { + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI名称操作UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.ShowUI(ui_name); + } + } + + public void ShowUIByPath(string ui_path) + { + if (IsAdvanced) + { + XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI路径操作UI, 请使用UI实例的句柄ID"); + return; + } + else + { + m_UIMgr_Normal.ShowUIByPath(ui_path); + } + } + + + public void ShowUI(int ui_id) + { + if (IsAdvanced) + { + m_UIMgr_Adv.ShowUI(ui_id); + } + else + { + XLog.PrintW("[TinaX][UIKit]仅在高级模式下,可使用句柄ID操作UI"); + return; + } + } + + public void SetUIGroup(UIGroupConf ui_group) + { + mDefaultUIGroup = ui_group; + } + } + + + /// + /// UI窗口下方的遮罩层 + /// + public class UIMaskMgr + { + private GameObject MaskGo; + private Canvas MaskCanvas; + private XUIMgrGateway mGateway; + + /// + /// 记录所有需要Mask的UI对象 + /// + private List UIMaskList = new List(); + private UIItem cur_MaskItem; + + /// + /// 初始化 + /// + public UIMaskMgr(Transform TransUIRoot,Color maskColor, XUIMgrGateway _gateway) + { + mGateway = _gateway; + MaskGo = TransUIRoot.gameObject.FindOrCreateGo("UIMask"); + MaskCanvas = MaskGo.GetComponentOrAdd(); + MaskCanvas.overrideSorting = true; + MaskCanvas.sortingOrder = 0; + + + var mask_gr = MaskGo.GetComponentOrAdd(); + mask_gr.ignoreReversedGraphics = true; + + var rect_mask_trans = MaskGo.GetComponent(); + rect_mask_trans.anchorMin = Vector2.zero; + rect_mask_trans.anchorMax = Vector2.one; + rect_mask_trans.anchoredPosition3D = Vector3.zero; + rect_mask_trans.localScale = Vector3.one; + rect_mask_trans.sizeDelta = Vector2.zero; + + var go_img_mask = MaskGo.FindOrCreateGo("Mask"); + var img_mask = go_img_mask.GetComponentOrAdd(); + img_mask.color = maskColor; + + var rect_img = go_img_mask.GetComponent(); + rect_img.anchorMin = Vector2.zero; + rect_img.anchorMax = Vector2.one; + rect_img.anchoredPosition3D = Vector3.zero; + rect_img.localScale = Vector3.one; + rect_img.sizeDelta = Vector2.zero; + + go_img_mask.GetComponentOrAdd