Преглед изворни кода

调通dotnet运行服务端

tanghai пре 1 година
родитељ
комит
5dea84182d
30 измењених фајлова са 132 додато и 421 уклоњено
  1. 1 1
      DotNet/App/Program.cs
  2. 1 0
      DotNet/Model/ET.Model.csproj
  3. 5 8
      Unity/Assets/Scripts/Hotfix/ET.Hotfix.asmdef
  4. 5 8
      Unity/Assets/Scripts/HotfixView/ET.HotfixView.asmdef
  5. 5 8
      Unity/Assets/Scripts/Model/ET.Model.asmdef
  6. 5 8
      Unity/Assets/Scripts/ModelView/ET.ModelView.asmdef
  7. 8 4
      Unity/Packages/com.et.loader/DotNet~/CodeLoader.cs
  8. 1 1
      Unity/Packages/com.et.loader/DotNet~/ET.Loader.csproj
  9. 42 24
      Unity/Packages/com.et.loader/DotNet~/Init.cs
  10. 5 58
      Unity/Packages/com.et.loader/Editor/Assembly/AssemblyEditor.cs
  11. 0 266
      Unity/Packages/com.et.loader/Editor/Assembly/AssemblyTool.cs
  12. 0 11
      Unity/Packages/com.et.loader/Editor/Assembly/AssemblyTool.cs.meta
  13. 43 17
      Unity/Packages/com.et.loader/Editor/AssetPostProcessor/OnGenerateCSProjectProcessor.cs
  14. 1 0
      Unity/Packages/com.et.loader/Editor/BuildEditor/BuildHelper.cs
  15. 6 2
      Unity/Packages/com.et.loader/Editor/GlobalConfigEditor/GlobalConfigEditor.cs
  16. 3 2
      Unity/Packages/com.et.loader/Editor/ServerCommandLineEditor/ServerCommandLineEditor.cs
  17. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/AI/XunLuoPathComponent.cs
  18. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/ClientSenderComponent.cs
  19. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Move/Wait_UnitStop.cs
  20. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Scene/Wait_CreateMyUnit.cs
  21. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Scene/Wait_SceneChangeFinish.cs
  22. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Unit/PlayerComponent.cs
  23. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/A2NetClient_Message.cs
  24. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/ClientSessionErrorComponent.cs
  25. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Ping/PingComponent.cs
  26. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Router/RouterAddressComponent.cs
  27. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Router/RouterCheckComponent.cs
  28. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Router/RouterConnector.cs
  29. 0 0
      Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Session/SessionComponent.cs
  30. 1 3
      Unity/ProjectSettings/QualitySettings.asset

+ 1 - 1
DotNet/App/Program.cs

@@ -14,7 +14,7 @@ namespace ET
             //model并没有用到,就不会加载,结果会导致CodeLoader反射调用model失败。
             //客户端服务端不热更不共享的组件可以写到Loader中,比如表现层需要一个组件不需要热更,可以写在Loader中,这样性能更高。如果客户端跟服务端共享的并且不需要热更的
             //的组件可以写在Core中
-            //Entry.Init();
+            Entry.Init();
             
             Init init = new();
             init.Start();

+ 1 - 0
DotNet/Model/ET.Model.csproj

@@ -61,6 +61,7 @@
         <ProjectReference Include="..\..\Share\SourceGenerator\Share.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
         <ProjectReference Include="..\..\Unity\Packages\com.et.core\DotNet~\ET.Core.csproj" />
         <ProjectReference Include="..\..\Unity\Packages\com.et.dotrecast\DotNet~\ET.DotRecast.csproj" />
+        <ProjectReference Include="..\..\Unity\Packages\com.et.loader\DotNet~\ET.Loader.csproj" />
         <ProjectReference Include="..\..\Unity\Packages\com.et.mathematics\Runtime~\ET.Mathematics.csproj" />
     </ItemGroup> 
 </Project>

+ 5 - 8
Unity/Assets/Scripts/Hotfix/ET.Hotfix.asmdef

@@ -9,18 +9,15 @@
         "ET.Loader",
         "ET.DotRecast"
     ],
-    "includePlatforms": [],
+    "includePlatforms": [
+        "Editor"
+    ],
     "excludePlatforms": [],
     "allowUnsafeCode": true,
     "overrideReferences": false,
     "precompiledReferences": [],
     "autoReferenced": true,
-    "defineConstraints": [
-        "UNITY_COMPILE || UNITY_EDITOR"
-    ],
+    "defineConstraints": [],
     "versionDefines": [],
-    "noEngineReferences": true,
-    "optionalUnityReferences": [],
-    "additionalReferences": [],
-    "compilerOptions": ""
+    "noEngineReferences": true
 }

+ 5 - 8
Unity/Assets/Scripts/HotfixView/ET.HotfixView.asmdef

@@ -14,18 +14,15 @@
         "ET.UI",
         "ET.ReferenceCollector"
     ],
-    "includePlatforms": [],
+    "includePlatforms": [
+        "Editor"
+    ],
     "excludePlatforms": [],
     "allowUnsafeCode": true,
     "overrideReferences": false,
     "precompiledReferences": [],
     "autoReferenced": true,
-    "defineConstraints": [
-        "UNITY_COMPILE || UNITY_EDITOR"
-    ],
+    "defineConstraints": [],
     "versionDefines": [],
-    "noEngineReferences": false,
-    "optionalUnityReferences": [],
-    "additionalReferences": [],
-    "compilerOptions": ""
+    "noEngineReferences": false
 }

+ 5 - 8
Unity/Assets/Scripts/Model/ET.Model.asmdef

@@ -7,18 +7,15 @@
         "MemoryPack",
         "ET.DotRecast"
     ],
-    "includePlatforms": [],
+    "includePlatforms": [
+        "Editor"
+    ],
     "excludePlatforms": [],
     "allowUnsafeCode": true,
     "overrideReferences": false,
     "precompiledReferences": [],
     "autoReferenced": true,
-    "defineConstraints": [
-        "UNITY_COMPILE || UNITY_EDITOR"
-    ],
+    "defineConstraints": [],
     "versionDefines": [],
-    "noEngineReferences": true,
-    "optionalUnityReferences": [],
-    "additionalReferences": [],
-    "compilerOptions": ""
+    "noEngineReferences": true
 }

+ 5 - 8
Unity/Assets/Scripts/ModelView/ET.ModelView.asmdef

@@ -9,18 +9,15 @@
         "YooAsset",
         "ET.UI"
     ],
-    "includePlatforms": [],
+    "includePlatforms": [
+        "Editor"
+    ],
     "excludePlatforms": [],
     "allowUnsafeCode": true,
     "overrideReferences": false,
     "precompiledReferences": [],
     "autoReferenced": true,
-    "defineConstraints": [
-        "UNITY_COMPILE || UNITY_EDITOR"
-    ],
+    "defineConstraints": [],
     "versionDefines": [],
-    "noEngineReferences": false,
-    "optionalUnityReferences": [],
-    "additionalReferences": [],
-    "compilerOptions": ""
+    "noEngineReferences": false
 }

+ 8 - 4
Unity/Packages/com.et.loader/DotNet~/CodeLoader.cs

@@ -12,11 +12,15 @@ namespace ET
         private Assembly assembly;
 
         public void Awake()
+        {
+        }
+
+        public void Start()
         {
             Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
             foreach (Assembly ass in assemblies)
             {
-                if (ass.GetName().Name == "Model")
+                if (ass.GetName().Name == "ET.Model")
                 {
                     this.assembly = ass;
                     break;
@@ -35,9 +39,9 @@ namespace ET
         {
             assemblyLoadContext?.Unload();
             GC.Collect();
-            assemblyLoadContext = new AssemblyLoadContext("Hotfix", true);
-            byte[] dllBytes = File.ReadAllBytes("./Hotfix.dll");
-            byte[] pdbBytes = File.ReadAllBytes("./Hotfix.pdb");
+            assemblyLoadContext = new AssemblyLoadContext("ET.Hotfix", true);
+            byte[] dllBytes = File.ReadAllBytes("./ET.Hotfix.dll");
+            byte[] pdbBytes = File.ReadAllBytes("./ET.Hotfix.pdb");
             Assembly hotfixAssembly = assemblyLoadContext.LoadFromStream(new MemoryStream(dllBytes), new MemoryStream(pdbBytes));
             return hotfixAssembly;
         }

+ 1 - 1
Unity/Packages/com.et.loader/DotNet~/ET.Loader.csproj

@@ -25,8 +25,8 @@
     </PropertyGroup>
     
     <ItemGroup>
-      <ProjectReference Include="..\..\..\..\DotNet\Model\ET.Model.csproj" />
       <ProjectReference Include="..\..\..\..\Share\Analyzer\Share.Analyzer.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> 
       <ProjectReference Include="..\..\..\..\Share\SourceGenerator\Share.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
+      <ProjectReference Include="..\..\com.et.core\DotNet~\ET.Core.csproj" />
     </ItemGroup>
 </Project>

+ 42 - 24
Unity/Packages/com.et.loader/DotNet~/Init.cs

@@ -1,30 +1,48 @@
 using System;
+using System.Threading;
+using CommandLine;
 
 namespace ET
 {
-	public class Init
-	{
-		public void Start()
-		{
-			try
-			{
-				Entry.Start();
-			}
-			catch (Exception e)
-			{
-				Log.Error(e);
-			}
-		}
+    public class Init
+    {
+        public void Start()
+        {
+            try
+            {
+                AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
+                {
+                    Log.Error(e.ExceptionObject.ToString());
+                };
+				
+                // 命令行参数
+                Parser.Default.ParseArguments<Options>(System.Environment.GetCommandLineArgs())
+                        .WithNotParsed(error => throw new Exception($"命令行格式错误! {error}"))
+                        .WithParsed((o)=>World.Instance.AddSingleton(o));
+				
+                World.Instance.AddSingleton<Logger>().Log = new NLogger(Options.Instance.SceneName, Options.Instance.Process, 0);
+				
+                ETTask.ExceptionHandler += Log.Error;
+                World.Instance.AddSingleton<TimeInfo>();
+                World.Instance.AddSingleton<FiberManager>();
 
-		public void Update()
-		{
-			TimeInfo.Instance.Update();
-			FiberManager.Instance.Update();
-		}
+                World.Instance.AddSingleton<CodeLoader>().Start();
+            }
+            catch (Exception e)
+            {
+                Log.Error(e);
+            }
+        }
 
-		public void LateUpdate()
-		{
-			FiberManager.Instance.LateUpdate();
-		}
-	}
-}
+        public void Update()
+        {
+            TimeInfo.Instance.Update();
+            FiberManager.Instance.Update();
+        }
+
+        public void LateUpdate()
+        {
+            FiberManager.Instance.LateUpdate();
+        }
+    }
+}

+ 5 - 58
Unity/Packages/com.et.loader/Editor/Assembly/AssemblyEditor.cs

@@ -6,6 +6,8 @@ namespace ET
 {
     public static class AssemblyEditor
     {
+        private static readonly string[] DllNames = { "ET.Hotfix", "ET.HotfixView", "ET.Model", "ET.ModelView" };
+        
         [InitializeOnLoadMethod]
         static void Initialize()
         {
@@ -18,11 +20,6 @@ namespace ET
                         OnExitingEditMode();
                         break;
                     }
-                    case PlayModeStateChange.ExitingPlayMode:
-                    {
-                        OnExitingPlayMode();
-                        break;
-                    }
                 }
             };
         }
@@ -33,68 +30,18 @@ namespace ET
         /// </summary>
         static void OnExitingEditMode()
         {
-            foreach (string dll in AssemblyTool.DllNames)
+            foreach (string dll in DllNames)
             {
                 string dllFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.dll";
                 if (File.Exists(dllFile))
                 {
-                    string dllDisableFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.dll.DISABLE";
-                    if (File.Exists(dllDisableFile))
-                    {
-                        File.Delete(dllDisableFile);
-                    }
-
-                    File.Move(dllFile, dllDisableFile);
+                    File.Delete(dllFile);
                 }
 
                 string pdbFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.pdb";
                 if (File.Exists(pdbFile))
                 {
-                    string pdbDisableFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.pdb.DISABLE";
-                    if (File.Exists(pdbDisableFile))
-                    {
-                        File.Delete(pdbDisableFile);
-                    }
-
-                    File.Move(pdbFile, pdbDisableFile);
-                }
-            }
-        }
-
-        /// <summary>
-        /// 退出运行模式时处理(即将进入编辑模式)
-        /// 还原Library里面屏蔽掉的dll(HybridCLR或者非EnableDll模式都会用到这个目录下的dll, 故需要还原)
-        /// </summary>
-        static void OnExitingPlayMode()
-        {
-            foreach (string dll in AssemblyTool.DllNames)
-            {
-                string dllDisableFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.dll.DISABLE";
-                if (File.Exists(dllDisableFile))
-                {
-                    string dllFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.dll";
-                    if (File.Exists(dllFile))
-                    {
-                        File.Delete(dllDisableFile);
-                    }
-                    else
-                    {
-                        File.Move(dllDisableFile, dllFile);
-                    }
-                }
-
-                string pdbDisableFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.pdb.DISABLE";
-                if (File.Exists(pdbDisableFile))
-                {
-                    string pdbFile = $"{Application.dataPath}/../Library/ScriptAssemblies/{dll}.pdb";
-                    if (File.Exists(pdbFile))
-                    {
-                        File.Delete(pdbDisableFile);
-                    }
-                    else
-                    {
-                        File.Move(pdbDisableFile, pdbFile);
-                    }
+                    File.Delete(pdbFile);
                 }
             }
         }

+ 0 - 266
Unity/Packages/com.et.loader/Editor/Assembly/AssemblyTool.cs

@@ -1,266 +0,0 @@
-using System.IO;
-using System.Threading;
-using UnityEditor;
-using UnityEditor.Build.Player;
-using UnityEngine;
-
-namespace ET
-{
-    public static class AssemblyTool
-    {
-        /// <summary>
-        /// Unity线程的同步上下文
-        /// </summary>
-        static SynchronizationContext unitySynchronizationContext { get; set; }
-
-        /// <summary>
-        /// 程序集名字数组
-        /// </summary>
-        public static readonly string[] DllNames = { "ET.Hotfix", "ET.HotfixView", "ET.Model", "ET.ModelView" };
-
-        [InitializeOnLoadMethod]
-        static void Initialize()
-        {
-            unitySynchronizationContext = SynchronizationContext.Current;
-        }
-
-        /// <summary>
-        /// 菜单和快捷键编译按钮
-        /// </summary>
-        [MenuItem("ET/Compile _F6", false, ETMenuItemPriority.Compile)]
-        static void MenuItemOfCompile()
-        {
-            // 强制刷新一下,防止关闭auto refresh,文件修改时间不准确
-            AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
-
-            DoCompile();
-        }
-
-        /// <summary>
-        /// 菜单和快捷键热重载按钮
-        /// </summary>
-        [MenuItem("ET/Reload _F7", false, ETMenuItemPriority.Compile)]
-        static void MenuItemOfReload()
-        {
-            if (Application.isPlaying)
-            {
-                CodeLoader.Instance.Reload();
-            }
-        }
-
-        /// <summary>
-        /// 执行编译代码流程
-        /// </summary>
-        public static void DoCompile()
-        {
-            // 强制刷新一下,防止关闭auto refresh,编译出老代码
-            AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
-
-            RefreshCodeMode();
-            RefreshBuildType();
-
-            bool isCompileOk = CompileDlls();
-            if (!isCompileOk)
-            {
-                return;
-            }
-
-            CopyHotUpdateDlls();
-            BuildHelper.ReGenerateProjectFiles();
-            
-            Log.Info($"Compile Finish!");
-        }
-
-        /// <summary>
-        /// 刷新代码模式
-        /// </summary>
-        static void RefreshCodeMode()
-        {
-            CodeMode codeMode = CodeMode.ClientServer;
-            GlobalConfig globalConfig = Resources.Load<GlobalConfig>("GlobalConfig");
-            if (globalConfig)
-            {
-                codeMode = globalConfig.CodeMode;
-            }
-
-            switch (codeMode)
-            {
-                case CodeMode.Client:
-                {
-                    EnableUnityClient();
-                    break;
-                }
-                case CodeMode.Server:
-                {
-                    EnableUnityServer();
-                    break;
-                }
-                case CodeMode.ClientServer:
-                {
-                    EnableUnityClientServer();
-                    break;
-                }
-            }
-
-            AssetDatabase.Refresh();
-        }
-
-        /// <summary>
-        /// 刷新构建类型
-        /// </summary>
-        static void RefreshBuildType()
-        {
-            BuildType buildType = BuildType.Release;
-            GlobalConfig globalConfig = Resources.Load<GlobalConfig>("GlobalConfig");
-            if (globalConfig)
-            {
-                buildType = globalConfig.BuildType;
-            }
-
-            EditorUserBuildSettings.development = buildType == BuildType.Debug;
-        }
-
-        /// <summary>
-        /// 编译成dll
-        /// </summary>
-        static bool CompileDlls()
-        {
-            // 运行时编译需要先设置为UnitySynchronizationContext, 编译完再还原为CurrentContext
-            SynchronizationContext lastSynchronizationContext = Application.isPlaying ? SynchronizationContext.Current : null;
-            SynchronizationContext.SetSynchronizationContext(unitySynchronizationContext);
-
-            bool isCompileOk = false;
-
-            try
-            {
-                Directory.CreateDirectory(Define.BuildOutputDir);
-                BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
-                BuildTargetGroup group = BuildPipeline.GetBuildTargetGroup(target);
-                ScriptCompilationSettings scriptCompilationSettings = new()
-                {
-                    group = group,
-                    target = target,
-                    extraScriptingDefines = new[] { "UNITY_COMPILE" },
-                    options = EditorUserBuildSettings.development ? ScriptCompilationOptions.DevelopmentBuild : ScriptCompilationOptions.None
-                };
-                ScriptCompilationResult result = PlayerBuildInterface.CompilePlayerScripts(scriptCompilationSettings, Define.BuildOutputDir);
-                isCompileOk = result.assemblies.Count > 0;
-                EditorUtility.ClearProgressBar();
-            }
-            finally
-            {
-                if (lastSynchronizationContext != null)
-                {
-                    SynchronizationContext.SetSynchronizationContext(lastSynchronizationContext);
-                }
-            }
-
-            return isCompileOk;
-        }
-
-        /// <summary>
-        /// 将dll文件复制到加载目录
-        /// </summary>
-        static void CopyHotUpdateDlls()
-        {
-            FileHelper.CleanDirectory(Define.CodeDir);
-            foreach (string dllName in DllNames)
-            {
-                string sourceDll = $"{Define.BuildOutputDir}/{dllName}.dll";
-                string sourcePdb = $"{Define.BuildOutputDir}/{dllName}.pdb";
-                File.Copy(sourceDll, $"{Define.CodeDir}/{dllName}.dll.bytes", true);
-                File.Copy(sourcePdb, $"{Define.CodeDir}/{dllName}.pdb.bytes", true);
-            }
-
-            AssetDatabase.Refresh();
-        }
-
-        /// <summary>
-        /// 启用纯客户端模式
-        /// </summary>
-        static void EnableUnityClient()
-        {
-            DisableAsmdef("Assets/Scripts/Model/Generate/Client/Ignore.asmdef");
-            EnableAsmdef("Assets/Scripts/Model/Generate/Server/Ignore.asmdef");
-            EnableAsmdef("Assets/Scripts/Model/Generate/ClientServer/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/Model/Client/Ignore.asmdef");
-            EnableAsmdef("Assets/Scripts/Model/Server/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/Hotfix/Client/Ignore.asmdef");
-            EnableAsmdef("Assets/Scripts/Hotfix/Server/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/ModelView/Client/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/HotfixView/Client/Ignore.asmdef");
-        }
-
-        /// <summary>
-        /// 启用纯服务端模式
-        /// </summary>
-        static void EnableUnityServer()
-        {
-            EnableAsmdef("Assets/Scripts/Model/Generate/Client/Ignore.asmdef");
-            EnableAsmdef("Assets/Scripts/Model/Generate/Server/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/Model/Generate/ClientServer/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/Model/Client/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/Model/Server/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/Hotfix/Client/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/Hotfix/Server/Ignore.asmdef");
-
-            EnableAsmdef("Assets/Scripts/HotfixView/Client/Ignore.asmdef");
-            EnableAsmdef("Assets/Scripts/ModelView/Client/Ignore.asmdef");
-        }
-
-        /// <summary>
-        /// 启用双端模式
-        /// </summary>
-        static void EnableUnityClientServer()
-        {
-            EnableAsmdef("Assets/Scripts/Model/Generate/Client/Ignore.asmdef");
-            EnableAsmdef("Assets/Scripts/Model/Generate/Server/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/Model/Generate/ClientServer/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/Model/Client/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/Model/Server/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/Hotfix/Client/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/Hotfix/Server/Ignore.asmdef");
-
-            DisableAsmdef("Assets/Scripts/HotfixView/Client/Ignore.asmdef");
-            DisableAsmdef("Assets/Scripts/ModelView/Client/Ignore.asmdef");
-        }
-
-        /// <summary>
-        /// 启用指定的程序集定义文件
-        /// </summary>
-        static void EnableAsmdef(string asmdefFile)
-        {
-            string asmdefDisableFile = $"{asmdefFile}.DISABLED";
-            string srcFilePath = asmdefDisableFile.Replace("Assets/Scripts/", "Assets/Settings/IgnoreAsmdef/");
-
-            if (!File.Exists(srcFilePath))
-            {
-                Debug.LogError($"忽略编译配置的原文件不存在, 请检查项目文件完整性:{srcFilePath}");
-                return;
-            }
-
-            if (File.Exists(asmdefFile) && new FileInfo(srcFilePath).LastWriteTime == new FileInfo(asmdefFile).LastWriteTime)
-            {
-                return;
-            }
-
-            File.Copy(srcFilePath, asmdefFile, true);
-        }
-
-        /// <summary>
-        /// 删除指定的程序集定义文件
-        /// </summary>
-        static void DisableAsmdef(string asmdefFile)
-        {
-            File.Delete(asmdefFile);
-            File.Delete($"{asmdefFile}.meta");
-        }
-    }
-}

+ 0 - 11
Unity/Packages/com.et.loader/Editor/Assembly/AssemblyTool.cs.meta

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

+ 43 - 17
Unity/Packages/com.et.loader/Editor/AssetPostProcessor/OnGenerateCSProjectProcessor.cs

@@ -90,23 +90,49 @@ namespace ET
 
             {
                 string links = "<Compile Include=\"Library/PackageCache/com.et.*/Runtime~/" + dllName + "~/Share/**/*.cs\">\n            " +
-                    "<Link>$([System.String]::new(%(RecursiveDir)).Substring(7, $([System.String]::new(%(RecursiveDir)).Replace(\"Runtime~\", \"\")\"%(FileName)%(Extension)</Link>\n" +
-                    "</Compile>\n\n        " +
-                    "<Compile Include=\"Library/PackageCache/com.et.*/Runtime~/" + dllName + "/Client/**/*.cs\">\n            " +
-                    "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
-                    "</Compile>\n\n        " +
-                    "<Compile Include=\"Library/PackageCache/com.et.*/Runtime~/" + dllName + "/Server/**/*.cs\">\n            " +
-                    "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
-                    "</Compile>\n\n        " +
-                    "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Share/**/*.cs\">\n            " +
-                    "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
-                    "</Compile>\n\n        " +
-                    "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Client/**/*.cs\">\n            " +
-                    "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
-                    "</Compile>\n\n        " +
-                    "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Server/**/*.cs\">\n            " +
-                    "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
-                    "</Compile>";
+                        "<Link>$([System.String]::new(%(RecursiveDir)).Substring(7, $([System.String]::new(%(RecursiveDir)).Replace(\"Runtime~\", \"\")\"%(FileName)%(Extension)</Link>\n" +
+                        "</Compile>\n\n        " +
+                        
+                        "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Share/**/*.cs\">\n            " +
+                        "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                        "</Compile>\n\n        ";
+                
+                switch (codeMode)
+                {
+                    case CodeMode.Client:
+                        links += "<Compile Include=\"Library/PackageCache/com.et.*/Runtime~/" + dllName + "/Client/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n\n        ";
+                        links += "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Client/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n\n        ";
+                        break;
+                    case CodeMode.Server:
+                        links += "<Compile Include=\"Library/PackageCache/com.et.*/Runtime~/" + dllName + "/Server/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n\n        ";
+                        links += "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Server/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n";
+                        break;
+                    case CodeMode.ClientServer:
+                        links += "<Compile Include=\"Library/PackageCache/com.et.*/Runtime~/" + dllName + "/Server/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n\n        ";
+                        links += "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Server/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n";
+                        links += "<Compile Include=\"Library/PackageCache/com.et.*/Runtime~/" + dllName + "/Client/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n\n        ";
+                        links += "<Compile Include=\"Packages/com.et.*/Runtime~/" + dllName + "/Client/**/*.cs\">\n            " +
+                                "<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>\n" +
+                                "</Compile>\n\n        ";
+                        
+                        break;
+                    default:
+                        throw new ArgumentOutOfRangeException(nameof(codeMode), codeMode, null);
+                }
                 
                 switch (dllName)
                 {

+ 1 - 0
Unity/Packages/com.et.loader/Editor/BuildEditor/BuildHelper.cs

@@ -15,6 +15,7 @@ namespace ET
         public static void ReGenerateProjectFiles()
         {
             Unity.CodeEditor.CodeEditor.CurrentEditor.SyncAll();
+            Debug.Log("regenerate csproj");
         }
 
 #if ENABLE_VIEW

+ 6 - 2
Unity/Packages/com.et.loader/Editor/GlobalConfigEditor/GlobalConfigEditor.cs

@@ -24,7 +24,8 @@ namespace ET
             {
                 globalConfig.CodeMode = codeMode;
                 EditorResHelper.SaveAssets(globalConfig);
-                AssemblyTool.DoCompile();
+                AssetDatabase.Refresh();
+                BuildHelper.ReGenerateProjectFiles();
             }
             
             BuildType buildType = (BuildType)EditorGUILayout.EnumPopup("BuildType", globalConfig.BuildType);
@@ -38,7 +39,8 @@ namespace ET
                     _ => throw new ArgumentOutOfRangeException()
                 };
                 EditorResHelper.SaveAssets(globalConfig);
-                AssemblyTool.DoCompile();
+                AssetDatabase.Refresh();
+                BuildHelper.ReGenerateProjectFiles();
             }
             
             string sceneName = EditorGUILayout.TextField($"SceneName", globalConfig.SceneName);
@@ -46,7 +48,9 @@ namespace ET
             {
                 globalConfig.SceneName = sceneName;
                 EditorResHelper.SaveAssets(globalConfig);
+                AssetDatabase.Refresh();
             }
+            
         }
     }
 }

+ 3 - 2
Unity/Packages/com.et.loader/Editor/ServerCommandLineEditor/ServerCommandLineEditor.cs

@@ -33,6 +33,7 @@ namespace ET
 
         public void OnGUI()
         {
+            GlobalConfig globalConfig = Resources.Load<GlobalConfig>("GlobalConfig");
             selectStartConfigIndex = EditorGUILayout.Popup(selectStartConfigIndex, this.startConfigs);
             this.startConfig = this.startConfigs[this.selectStartConfigIndex];
             this.developMode = (DevelopMode)EditorGUILayout.EnumPopup("起服模式:", this.developMode);
@@ -45,13 +46,13 @@ namespace ET
 
             if (GUILayout.Button("Start Server(Single Process)"))
             {
-                string arguments = $"App.dll --Process=1 --StartConfig=StartConfig/{this.startConfig} --Console=1";
+                string arguments = $"ET.App.dll --SceneName={globalConfig.SceneName} --Process=1 --StartConfig=StartConfig/{this.startConfig} --Console=1";
                 ProcessHelper.Run(dotnet, arguments, "../Bin/");
             }
 
             if (GUILayout.Button("Start Watcher"))
             {
-                string arguments = $"App.dll --SceneName=Watcher --StartConfig=StartConfig/{this.startConfig} --Console=1";
+                string arguments = $"ET.App.dll --SceneName=Watcher --StartConfig=StartConfig/{this.startConfig} --Console=1";
                 ProcessHelper.Run(dotnet, arguments, "../Bin/");
             }
 

+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/AI/XunLuoPathComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/AI/XunLuoPathComponent.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/Main/ClientSenderComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/ClientSenderComponent.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/Main/Move/Wait_UnitStop.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Move/Wait_UnitStop.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/Main/Scene/Wait_CreateMyUnit.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Scene/Wait_CreateMyUnit.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/Main/Scene/Wait_SceneChangeFinish.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Scene/Wait_SceneChangeFinish.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/Main/Unit/PlayerComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/Main/Unit/PlayerComponent.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/NetClient/A2NetClient_Message.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/A2NetClient_Message.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/Module/Message/ClientSessionErrorComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/ClientSessionErrorComponent.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/NetClient/Ping/PingComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Ping/PingComponent.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/NetClient/Router/RouterAddressComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Router/RouterAddressComponent.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/NetClient/Router/RouterCheckComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Router/RouterCheckComponent.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/NetClient/Router/RouterConnector.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Router/RouterConnector.cs


+ 0 - 0
Unity/Packages/com.et.statesync/Runtime~/Model/Client/StateSync/NetClient/Session/SessionComponent.cs → Unity/Packages/com.et.statesync/Runtime~/Model/Client/NetClient/Session/SessionComponent.cs


+ 1 - 3
Unity/ProjectSettings/QualitySettings.asset

@@ -302,6 +302,4 @@ QualitySettings:
     terrainMaxTrees: 50
     excludedTargetPlatforms: []
   m_TextureMipmapLimitGroupNames: []
-  m_PerPlatformDefaultQuality:
-    Server: 0
-    Standalone: 0
+  m_PerPlatformDefaultQuality: {}