/** * 导出资源 */ public static void Export(GameObject curObj, string exportPath) { SerializeObject.Clear(); string prefabPath = "Assets/" + curObj.name + ".prefab.json"; //如果是Unity预制体那么就导出所在目录,如果是场景的一个普通GameObject,那么导出Assets下 #if UNITY_2018_4_OR_NEWER if (UnityEditor.PrefabUtility.GetPrefabAssetType(curObj) == UnityEditor.PrefabAssetType.Variant) { UnityEngine.Object parentObject = UnityEditor.PrefabUtility.GetPrefabInstanceHandle(curObj); prefabPath = UnityEditor.AssetDatabase.GetAssetPath(parentObject) + ".json"; } #else if (UnityEditor.PrefabUtility.GetPrefabType(curObj) == UnityEditor.PrefabType.PrefabInstance) { UnityEngine.Object parentObject = UnityEditor.PrefabUtility.GetPrefabParent(curObj); prefabPath = UnityEditor.AssetDatabase.GetAssetPath(parentObject) + ".json"; } #endif //保存路径 PathHelper.SetSceneOrPrefabPath(prefabPath); //预制体坐标归零,直接改坐标 var savePosition = curObj.transform.localPosition; if (ExportSetting.instance.common.posToZero) { curObj.transform.localPosition = Vector3.zero; } SerializeObject.SerializeEntity(curObj); SerializeContext.Export(exportPath, prefabPath); curObj.transform.localPosition = savePosition; }
public override void Serialize(SerializeContext data, JsonWriter writer) { writer.WriteStartObject(); writer.WritePropertyName(KEY_UUID); writer.WriteValue(this.uuid); writer.WritePropertyName(KEY_CLASS); writer.WriteValue(this.__class); foreach (var property in this.properties) { this.SerializeProperty(property.Key, property.Value, writer); } writer.WriteEndObject(); }
public override void Serialize(SerializeContext data, JsonWriter writer) { writer.WriteStartObject(); writer.WritePropertyName(SerizileData.KEY_UUID); writer.WriteValue(this.uuid); writer.WritePropertyName(SerizileData.KEY_CLASS); writer.WriteValue(this.__class); writer.WritePropertyName(SerizileData.KEY_COMPONENTS); writer.WriteStartArray(); foreach (var comp in this.components) { writer.WriteStartObject(); writer.WritePropertyName(SerizileData.KEY_UUID); writer.WriteValue(comp.uuid); writer.WriteEndObject(); } writer.WriteEndArray(); writer.WriteEndObject(); }
public static void Export(List <GameObject> roots, string exportPath) { string sceneName = PathHelper.CurSceneName; SerializeObject.Clear(); //路径 string scenePath = sceneName + ".scene.json"; PathHelper.SetSceneOrPrefabPath(scenePath); var scene = UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene(); var sceneEntity = SerializeObject.currentData.CreateEntity(); var sceneComp = SerializeObject.currentData.CreateComponent(SerializeClass.Scene); sceneComp.properties.SetString("name", sceneName.Substring(sceneName.LastIndexOf('/') + 1)); sceneEntity.AddComponent(sceneComp); var treeComp = SerializeObject.currentData.CreateComponent(SerializeClass.TreeNode); treeComp.properties.SetString("name", "Root"); treeComp.properties.SetReference("scene", sceneComp.uuid); sceneEntity.AddComponent(treeComp); var sceneSetting = ExportSetting.instance.scene; // 环境光和光照贴图 var sceneLightComp = SerializeObject.currentData.CreateComponent(SerializeClass.SceneLight); sceneLightComp.properties.SetColor("ambientColor", RenderSettings.ambientLight); if (sceneSetting.lightmap) { sceneLightComp.properties.SetNumber("lightmapIntensity", UnityEditor.Lightmapping.indirectOutputScale); sceneLightComp.properties.SetLightmaps(exportPath); } sceneEntity.AddComponent(sceneLightComp); if (sceneSetting.staticBatching) { var staticBatching = SerializeObject.currentData.CreateComponent(SerializeClass.StaticBatching); sceneEntity.AddComponent(staticBatching); } // 雾 if (RenderSettings.fog && sceneSetting.fog) { var fogComp = SerializeObject.currentData.CreateComponent(SerializeClass.Fog); if (RenderSettings.fogMode == FogMode.Linear) { fogComp.properties.SetInt("mode", 0); fogComp.properties.SetNumber("near", RenderSettings.fogStartDistance); fogComp.properties.SetNumber("far", RenderSettings.fogEndDistance); } else { fogComp.properties.SetInt("mode", 1); fogComp.properties.SetNumber("density", RenderSettings.fogDensity); } fogComp.properties.SetColor("color", RenderSettings.fogColor); sceneEntity.AddComponent(fogComp); } foreach (var child in roots) { var childEntity = SerializeObject.SerializeEntity(child); if (childEntity != null) { treeComp.AddChild(childEntity.treeNode); } } SerializeContext.Export(exportPath, scenePath); }
public abstract void Serialize(SerializeContext data, JsonWriter writer);
public override void Serialize(SerializeContext data, JsonWriter writer) { writer.WriteValue(ExportSetting.instance.GetExportPath(this.uri)); }