Unity中的光烘焙自动化5

发布时间:2019-06-11 10:16

[已发布http://sassybot.com/blog/light-baking-automation-in-unity-5/]

您好!我们来谈谈Unity 5中的光烘焙并自动烘焙过程。

我们都去过那里。盯着一个进度条,假设必须尽快完成,以便发现在最终完成该过程的时候它还没有完成。你看着时钟,骂自己浪费时间,你可以花时间睡觉。

轻度烘烤可能需要很长时间。通常这些过程是使用不同的计算机卸载的,或者是在一夜之间完成的,但通常需要有人按时按几个按钮然后移动。为了用更少的管理来完成更多的烘焙,我创建了一个简单的脚本来处理你投入的任何场景。

这个想法非常简单。告诉Unity哪些场景需要烘焙并将其设置为烘焙。您可以在下面看到它的工作原理示例。

脚本负责按下您给出的列表中每个场景的烘焙按钮,并在完成烘焙之前保存场景,然后再移动到下一个场景。在这样做的同时,它会报告每次烘焙所花费的时间以及每次烘烤完成的时间。

1)在Unity项目的根目录下创建一个Editor文件夹,并创建一个名为BakeScenes的新C#脚本

2)使用您选择的文本编辑器将下面的代并粘贴到Bake Scenes?脚本中
使用System.IO;使用UnityEngine;使用UnityEditor;使用System.Collections.Generic;公共课BakeScenes:EditorWindow{//用于存储场景的Object数组的数组public Object []场景;//列表和字符串数组,以便于管理List  sceneList = new List ();private int sceneIndex = 0;private string [] scenePath;//编辑文字string bakeButton =“Bake”;string status =“空闲......”;System.DateTime timeStamp;//菜单条目[MenuItem(“工具/烘焙场景”)]public static void ShowWindow(){EditorWindow window = GetWindow(typeof(BakeScenes),false,“Bake Scenes”);window.autoRepaintOnSceneChange = true;}//在焦点时刷新编辑器文本void OnFocus(){status =“空闲......”;if(!Lightmapping.isRunning){bakeButton =“烘烤”;}}void OnGUI(){//“target”可以是来自ScriptableObject的任何类//(可能是EditorWindow,MonoBehaviour等)ScriptableObject target = this;SerializedObject so = new SerializedObject(target);SerializedProperty scenesProperty = so.FindProperty(“scenes”);EditorGUILayout.PropertyField(scenesProperty,true); //真实意味着展示孩子so.ApplyModifiedProperties(); //记得应用修改后的属if(GUILayout.Button(bakeButton))//按钮开始烘烤过程{InitializeBake();}EditorGUILayout.LabelField(“状态:”,状态);so.Update();}//如果没有烘焙,请设置代理,设置场景,然后开始烘焙。//否则,停止光照贴图并更新编辑器文本void InitializeBake(){if(!Lightmapping.isRunning){Lightmapping.completed = null;Lightmapping.completed = SaveScene;Lightmapping.completed + = BakeNewScene;SetScenes();BakeNewScene();}其他{Lightmapping.Cancel();UpdateBakeProgress();}}//创建一个要烘焙的字符串数组private bool SetScenes(){//重置值sceneList.Clear();sceneIndex = 0;//获取场景和存储列表的路径if(scenes.Length == 0){status =“找不到场景”;bakeButton =“烘烤”;返回false;}其他{for(int i = 0; i  [已发布http://sassybot.com/blog/light-baking-automation-in-unity-5/] 

您好!我们来谈谈Unity 5中的光烘焙并自动烘焙过程。

我们都去过那里。盯着一个进度条,假设必须尽快完成,以便发现在最终完成该过程的时候它还没有完成。你看着时钟,骂自己浪费时间,你可以花时间睡觉。

轻度烘烤可能需要很长时间。通常这些过程是使用不同的计算机卸载的,或者是在一夜之间完成的,但通常需要有人按时按几个按钮然后移动。为了用更少的管理来完成更多的烘焙,我创建了一个简单的脚本来处理你投入的任何场景。

这个想法非常简单。告诉Unity哪些场景需要烘焙并将其设置为烘焙。您可以在下面看到它的工作原理示例。

脚本负责按下您给出的列表中每个场景的烘焙按钮,并在完成烘焙之前保存场景,然后再移动到下一个场景。在这样做的同时,它会报告每次烘焙所花费的时间以及每次烘烤完成的时间。

1)在Unity项目的根目录下创建一个Editor文件夹,并创建一个名为BakeScenes的新C#脚本

2)使用您选择的文本编辑器将下面的代并粘贴到Bake Scenes?脚本中
使用System.IO;使用UnityEngine;使用UnityEditor;使用System.Collections.Generic;公共课BakeScenes:EditorWindow{//用于存储场景的Object数组的数组public Object []场景;//列表和字符串数组,以便于管理List  sceneList = new List ();private int sceneIndex = 0;private string [] scenePath;//编辑文字string bakeButton =“Bake”;string status =“空闲......”;System.DateTime timeStamp;//菜单条目[MenuItem(“工具/烘焙场景”)]public static void ShowWindow(){EditorWindow window = GetWindow(typeof(BakeScenes),false,“Bake Scenes”);window.autoRepaintOnSceneChange = true;}//在焦点时刷新编辑器文本void OnFocus(){status =“空闲......”;if(!Lightmapping.isRunning){bakeButton =“烘烤”;}}void OnGUI(){//“target”可以是来自ScriptableObject的任何类//(可能是EditorWindow,MonoBehaviour等)ScriptableObject target = this;SerializedObject so = new SerializedObject(target);SerializedProperty scenesProperty = so.FindProperty(“scenes”);EditorGUILayout.PropertyField(scenesProperty,true); //真实意味着展示孩子so.ApplyModifiedProperties(); //记得应用修改后的属if(GUILayout.Button(bakeButton))//按钮开始烘烤过程{InitializeBake();}EditorGUILayout.LabelField(“状态:”,状态);so.Update();}//如果没有烘焙,请设置代理,设置场景,然后开始烘焙。//否则,停止光照贴图并更新编辑器文本void InitializeBake(){if(!Lightmapping.isRunning){Lightmapping.completed = null;Lightmapping.completed = SaveScene;Lightmapping.completed + = BakeNewScene;SetScenes();BakeNewScene();}其他{Lightmapping.Cancel();UpdateBakeProgress();}}//创建一个要烘焙的字符串数组private bool SetScenes(){//重置值sceneList.Clear();sceneIndex = 0;//获取场景和存储列表的路径if(scenes.Length == 0){status =“找不到场景”;bakeButton =“烘烤”;返回false;}其他{for(int i = 0; i 相关文章:
  • 玩家怎样才能使用游戏中的攻略
  • 游戏中的三大职业各有什么特点
  • 卧龙山庄地图中的物品玩家都如何得到
  • 上一篇:在Steam上折扣游戏的最有利可图的方式
    下一篇:EA为艾滋病研究筹集了18000美元