diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors.meta b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors.meta new file mode 100644 index 0000000..75cd38b --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 292b282919a768c4fa6b8adb858daa95 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiPrefabCache.cs b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiPrefabCache.cs similarity index 100% rename from AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiPrefabCache.cs rename to AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiPrefabCache.cs diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiPrefabCache.cs.meta b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiPrefabCache.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/AxiProjectTools/AxiPrefabCache.cs.meta rename to AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiPrefabCache.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiProjectTools.cs b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiProjectTools.cs new file mode 100644 index 0000000..02cf917 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiProjectTools.cs @@ -0,0 +1,305 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; + +public class AxiProjectTools : EditorWindow +{ + static string cachecfgPath = "Assets/AxiComToolCache.asset"; + static string toolSenceName = "AxiProjectTools"; + static string outCsDir = Application.dataPath + "/AxiCom/"; + static Dictionary ComType2GUID = new Dictionary(); + + static void GoTAxiProjectToolsSence() + { + string[] sceneGuids = AssetDatabase.FindAssets("t:scene"); + foreach (string guid in sceneGuids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + if (path.Contains(toolSenceName)) + { + EditorSceneManager.OpenScene(path); + return; + } + } + } + + [MenuItem("Axibug移植工具/[1]采集所有预制体和场景下的UGUI组件")] + public static void Part1() + { + GoTAxiProjectToolsSence(); + ComType2GUID.Clear(); + string[] sceneGuids = AssetDatabase.FindAssets("t:scene"); + foreach (string guid in sceneGuids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + if (path.Contains(toolSenceName)) + continue; + + EditorSceneManager.OpenScene(path); + + // 创建一个列表来存储根节点 + List rootNodes = new List(); + + // 遍历场景中的所有对象 + GameObject[] allObjects = FindObjectsOfType(); + foreach (GameObject obj in allObjects) + { + // 检查对象是否有父对象 + if (obj.transform.parent == null) + { + // 如果没有父对象,则它是一个根节点 + rootNodes.Add(obj); + } + } + + foreach (var node in rootNodes) + LoopPrefabNode(path, node, 0); + } + + + string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab"); + foreach (string guid in prefabGuids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + GetPrefab(path); + } + + AxiPrefabCache cache = ScriptableObject.CreateInstance(); + foreach (var data in ComType2GUID) + cache.caches.Add(data.Value); + AssetDatabase.CreateAsset(cache, cachecfgPath); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + GoTAxiProjectToolsSence(); + Debug.Log("处理完毕 [1]采集所有预制体和场景下的UGUI组件"); + } + + static void GetPrefab(string path) + { + GameObject prefab = AssetDatabase.LoadAssetAtPath(path); + LoopPrefabNode(path, prefab.gameObject, 0); + } + static void LoopPrefabNode(string rootPath, GameObject trans, int depth) + { + string nodename = $"{rootPath}>{trans.name}"; + + GameObject prefabRoot = trans.gameObject; + int comCount = prefabRoot.GetComponentCount(); + for (int i = 0; i < comCount; i++) + { + var com = prefabRoot.GetComponentAtIndex(i); + MonoBehaviour monoCom = com as MonoBehaviour; + if (monoCom == null) + continue; + Type monoType = monoCom.GetType(); + if (!monoType.FullName.Contains("UnityEngine.UI")) + continue; + // 获取MonoScript资源 + MonoScript monoScript = MonoScript.FromMonoBehaviour(monoCom); + if (monoScript != null) + { + // 获取MonoScript资源的GUID + string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(monoScript)); + Debug.Log($"{nodename} | [{monoType.Name}] {guid}({monoType.FullName})"); + ComType2GUID[monoType.FullName] = + new AxiPrefabCache_Com2GUID() + { + SrcFullName = monoType.FullName, + SrcName = monoType.Name, + GUID = guid, + }; + } + else + { + Debug.LogError("!!!! 没得"); + } + } + + //遍历 + foreach (Transform child in trans.transform) + LoopPrefabNode(nodename, child.gameObject, depth + 1); + } + + [MenuItem("Axibug移植工具/[2]生成中间脚本代码")] + public static void Part2() + { + if (Directory.Exists(outCsDir)) + Directory.Delete(outCsDir); + Directory.CreateDirectory(outCsDir); + AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath(cachecfgPath); + foreach (var data in cache.caches) + { + string toName = "Axi" + data.SrcName; + string toPath = outCsDir + toName + ".cs"; + string codeStr = "using UnityEngine.UI; public class " + toName + " : " + data.SrcName + " {}"; + try + { + System.IO.File.WriteAllText(toPath, codeStr); + data.ToName = toName; + data.ToPATH = toPath; + } + catch (Exception ex) + { + Debug.LogError("写入失败" + ex.ToString()); + } + } + Debug.Log("写入完毕"); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + Debug.Log("处理完毕 [2]生成中间脚本代码"); + } + + [MenuItem("Axibug移植工具/[3]收集生成的脚本")] + public static void Part3() + { + AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath(cachecfgPath); + List allMonoScripts = FindAllAssetsOfType(); + foreach (var data in cache.caches) + { + MonoScript monoScript = allMonoScripts.FirstOrDefault(w => w.name == data.ToName); + if (monoScript == null) + { + Debug.LogError("没找到" + data.ToName); + continue; + } + string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(monoScript)); + data.ToGUID = guid; + data.monoScript = monoScript; + } + Debug.Log("写入完毕"); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + Debug.Log("处理完毕 [3]收集生成的脚本"); + } + + static List FindAllAssetsOfType() where T : UnityEngine.Object + { + List assets = new List(); + + string[] allGuids = AssetDatabase.FindAssets(""); + foreach (string guid in allGuids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + if (path.EndsWith(".cs") || path.EndsWith(".js") || path.EndsWith(".boo")) // Unity支持多种脚本语言,但现代Unity主要使用C# + { + T asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + { + assets.Add(asset); + } + } + } + return assets; + } + + + [MenuItem("Axibug移植工具/[4]替换所有预制体和场景中的组件")] + public static void Part4() + { + AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath(cachecfgPath); + Dictionary tempReplaceDict = new Dictionary(); + foreach (var data in cache.caches) + { + tempReplaceDict[data.GUID] = data.ToGUID; + } + ProcessAllPrefabs("*.prefab", tempReplaceDict); + ProcessAllPrefabs("*.unity", tempReplaceDict); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + Debug.Log("处理完毕 [4]替换所有预制体和场景中的组件"); + } + + static void ProcessAllPrefabs(string form, Dictionary tempReplaceDict, bool reverse = false) + { + List prefabs = new List(); + var resourcesPath = Application.dataPath; + var absolutePaths = Directory.GetFiles(resourcesPath, form, SearchOption.AllDirectories); + for (int i = 0; i < absolutePaths.Length; i++) + { + Debug.Log("prefab name: " + absolutePaths[i]); + foreach (var VARIABLE in tempReplaceDict) + { + string oldValue = reverse ? VARIABLE.Value : VARIABLE.Key; + string newValue = reverse ? VARIABLE.Key : VARIABLE.Value; + ReplaceValue(absolutePaths[i], oldValue, newValue); + } + EditorUtility.DisplayProgressBar("处理预制体……", "处理预制体中……", (float)i / absolutePaths.Length); + } + EditorUtility.ClearProgressBar(); + } + + /// + /// 替换值 + /// + /// 文件路径 + static void ReplaceValue(string strFilePath, string oldLine, string newLine) + { + if (File.Exists(strFilePath)) + { + string[] lines = File.ReadAllLines(strFilePath); + for (int i = 0; i < lines.Length; i++) + { + lines[i] = lines[i].Replace(oldLine, newLine); + } + File.WriteAllLines(strFilePath, lines); + } + } + + + [MenuItem("Axibug移植工具/[5]UnPack所有预制体")] + public static void UnpackPrefabs() + { + + string[] allAssetPaths = AssetDatabase.GetAllAssetPaths(); + int prefabCount = 0; + + foreach (string path in allAssetPaths) + { + if (Path.GetExtension(path).Equals(".prefab")) + { + Debug.Log($"Unpacking {path}"); + UnpackPrefab(path); + prefabCount++; + } + } + Debug.Log($"Unpacked {prefabCount} prefabs."); + + Debug.Log("处理完毕 [5]UnPack所有预制体"); + } + + static void UnpackPrefab(string prefabPath) + { + GameObject prefabInstance = AssetDatabase.LoadAssetAtPath(prefabPath); + if (prefabInstance == null) + { + Debug.LogError($"Failed to load prefab at path: {prefabPath}"); + return; + } + + var obj = GameObject.Instantiate(prefabInstance, null); + TraverseHierarchy(obj); + PrefabUtility.SaveAsPrefabAsset(obj, prefabPath); + GameObject.DestroyImmediate(obj); + } + + static void TraverseHierarchy(GameObject obj) + { + // 检查该对象是否是预制体的实例 + if (PrefabUtility.IsPartOfPrefabInstance(obj)) + { + // 将预制体实例转换为普通游戏对象 + PrefabUtility.UnpackPrefabInstance(obj, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); + Debug.Log("Prefab instance converted to game object: " + obj.name); + } + + // 递归遍历子对象 + for (int i = 0; i < obj.transform.childCount; i++) + { + TraverseHierarchy(obj.transform.GetChild(i).gameObject); + } + } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/PrefabPathLister.cs.meta b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiProjectTools.cs.meta similarity index 100% rename from AxibugEmuOnline.Client/Assets/AxiProjectTools/PrefabPathLister.cs.meta rename to AxibugEmuOnline.Client/Assets/AxiProjectTools/Editors/AxiProjectTools.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/PrefabPathLister.cs b/AxibugEmuOnline.Client/Assets/AxiProjectTools/PrefabPathLister.cs deleted file mode 100644 index 3797f07..0000000 --- a/AxibugEmuOnline.Client/Assets/AxiProjectTools/PrefabPathLister.cs +++ /dev/null @@ -1,253 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using UnityEditor; -using UnityEngine; - -public class PrefabComponentLister : EditorWindow -{ - static string cachecfgPath = "Assets/AxiComToolCache.asset"; - static string outCsDir = Application.dataPath + "/AxiCom/"; - static Dictionary ComType2GUID = new Dictionary(); - - [MenuItem("移植工具/[1]采集所有预制体下的UGUI组件")] - public static void Part1() - { - ComType2GUID.Clear(); - string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab"); - foreach (string guid in prefabGuids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - GetPrefab(path); - } - - AxiPrefabCache cache = ScriptableObject.CreateInstance(); - foreach (var data in ComType2GUID) - cache.caches.Add(data.Value); - AssetDatabase.CreateAsset(cache, cachecfgPath); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - } - static void GetPrefab(string path) - { - GameObject prefab = AssetDatabase.LoadAssetAtPath(path); - LoopPrefabNode(path, prefab.gameObject, 0); - } - static void LoopPrefabNode(string rootPath, GameObject trans, int depth) - { - string nodename = $"{rootPath}>{trans.name}"; - - GameObject prefabRoot = trans.gameObject; - int comCount = prefabRoot.GetComponentCount(); - for (int i = 0; i < comCount; i++) - { - var com = prefabRoot.GetComponentAtIndex(i); - MonoBehaviour monoCom = com as MonoBehaviour; - if (monoCom == null) - continue; - Type monoType = monoCom.GetType(); - if (!monoType.FullName.Contains("UnityEngine.UI")) - continue; - // 获取MonoScript资源 - MonoScript monoScript = MonoScript.FromMonoBehaviour(monoCom); - if (monoScript != null) - { - // 获取MonoScript资源的GUID - string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(monoScript)); - Debug.Log($"{nodename} | [{monoType.Name}] {guid}({monoType.FullName})"); - ComType2GUID[monoType.FullName] = - new AxiPrefabCache_Com2GUID() - { - SrcFullName = monoType.FullName, - SrcName = monoType.Name, - GUID = guid, - }; - } - else - { - Debug.LogError("!!!! 没得"); - } - } - - - - //遍历 - foreach (Transform child in trans.transform) - LoopPrefabNode(nodename, child.gameObject, depth + 1); - } - - [MenuItem("移植工具/[2]生成中间脚本代码")] - public static void Part2() - { - if (Directory.Exists(outCsDir)) - Directory.Delete(outCsDir); - Directory.CreateDirectory(outCsDir); - AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath(cachecfgPath); - foreach (var data in cache.caches) - { - string toName = "Axi" + data.SrcName; - string toPath = outCsDir + toName + ".cs"; - string codeStr = "using UnityEngine.UI; public class " + toName + " : " + data.SrcName + " {}"; - try - { - System.IO.File.WriteAllText(toPath, codeStr); - data.ToName = toName; - data.ToPATH = toPath; - } - catch (Exception ex) - { - Debug.LogError("写入失败" + ex.ToString()); - } - } - Debug.Log("写入完毕"); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - } - - [MenuItem("移植工具/[3]收集生成的脚本")] - public static void Part3() - { - AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath(cachecfgPath); - List allMonoScripts = FindAllAssetsOfType(); - foreach (var data in cache.caches) - { - MonoScript monoScript = allMonoScripts.FirstOrDefault(w => w.name == data.ToName); - if (monoScript == null) - { - Debug.LogError("没找到" + data.ToName); - continue; - } - string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(monoScript)); - data.ToGUID = guid; - data.monoScript = monoScript; - } - Debug.Log("写入完毕"); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - } - - static List FindAllAssetsOfType() where T : UnityEngine.Object - { - List assets = new List(); - - string[] allGuids = AssetDatabase.FindAssets(""); - foreach (string guid in allGuids) - { - string path = AssetDatabase.GUIDToAssetPath(guid); - if (path.EndsWith(".cs") || path.EndsWith(".js") || path.EndsWith(".boo")) // Unity支持多种脚本语言,但现代Unity主要使用C# - { - T asset = AssetDatabase.LoadAssetAtPath(path); - if (asset != null) - { - assets.Add(asset); - } - } - } - - return assets; - } - - - [MenuItem("移植工具/[4]替换所有预制体")] - public static void Part4() - { - AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath(cachecfgPath); - Dictionary tempReplaceDict = new Dictionary(); - foreach (var data in cache.caches) - { - tempReplaceDict[data.GUID] = data.ToGUID; - } - ProcessAllPrefabs("*.prefab", tempReplaceDict); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); - } - - static void ProcessAllPrefabs(string form, Dictionary tempReplaceDict, bool reverse = false) - { - List prefabs = new List(); - var resourcesPath = Application.dataPath; - var absolutePaths = Directory.GetFiles(resourcesPath, form, SearchOption.AllDirectories); - for (int i = 0; i < absolutePaths.Length; i++) - { - Debug.Log("prefab name: " + absolutePaths[i]); - foreach (var VARIABLE in tempReplaceDict) - { - string oldValue = reverse ? VARIABLE.Value : VARIABLE.Key; - string newValue = reverse ? VARIABLE.Key : VARIABLE.Value; - ReplaceValue(absolutePaths[i], oldValue, newValue); - } - EditorUtility.DisplayProgressBar("处理预制体……", "处理预制体中……", (float)i / absolutePaths.Length); - } - EditorUtility.ClearProgressBar(); - } - - /// - /// 替换值 - /// - /// 文件路径 - static void ReplaceValue(string strFilePath, string oldLine, string newLine) - { - if (File.Exists(strFilePath)) - { - string[] lines = File.ReadAllLines(strFilePath); - for (int i = 0; i < lines.Length; i++) - { - lines[i] = lines[i].Replace(oldLine, newLine); - } - File.WriteAllLines(strFilePath, lines); - } - } - - - [MenuItem("移植工具/[5]UnPack")] - public static void UnpackPrefabs() - { - string[] allAssetPaths = AssetDatabase.GetAllAssetPaths(); - int prefabCount = 0; - - foreach (string path in allAssetPaths) - { - if (Path.GetExtension(path).Equals(".prefab")) - { - Debug.Log($"Unpacking {path}"); - UnpackPrefab(path); - prefabCount++; - } - } - - Debug.Log($"Unpacked {prefabCount} prefabs."); - } - - static void UnpackPrefab(string prefabPath) - { - GameObject prefabInstance = AssetDatabase.LoadAssetAtPath(prefabPath); - if (prefabInstance == null) - { - Debug.LogError($"Failed to load prefab at path: {prefabPath}"); - return; - } - - var obj = GameObject.Instantiate(prefabInstance, null); - TraverseHierarchy(obj); - PrefabUtility.SaveAsPrefabAsset(obj, prefabPath); - GameObject.DestroyImmediate(obj); - } - - static void TraverseHierarchy(GameObject obj) - { - // 检查该对象是否是预制体的实例 - if (PrefabUtility.IsPartOfPrefabInstance(obj)) - { - // 将预制体实例转换为普通游戏对象 - PrefabUtility.UnpackPrefabInstance(obj, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); - Debug.Log("Prefab instance converted to game object: " + obj.name); - } - - // 递归遍历子对象 - for (int i = 0; i < obj.transform.childCount; i++) - { - TraverseHierarchy(obj.transform.GetChild(i).gameObject); - } - } -} \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene.meta b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene.meta new file mode 100644 index 0000000..348498b --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 11a59d59d152c214bb99a09f4d795c21 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene/AxiProjectTools.unity b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene/AxiProjectTools.unity new file mode 100644 index 0000000..004ddca --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene/AxiProjectTools.unity @@ -0,0 +1,316 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1760378052 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1760378055} + - component: {fileID: 1760378054} + - component: {fileID: 1760378053} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1760378053 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1760378052} + m_Enabled: 1 +--- !u!20 &1760378054 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1760378052} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1760378055 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1760378052} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1948026923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1948026925} + - component: {fileID: 1948026924} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1948026924 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948026923} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1948026925 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1948026923} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1760378055} + - {fileID: 1948026925} diff --git a/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene/AxiProjectTools.unity.meta b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene/AxiProjectTools.unity.meta new file mode 100644 index 0000000..a0f4896 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/AxiProjectTools/Scene/AxiProjectTools.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f578c65afd0d1c84b9b59664106fab66 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: