简介:有时候需要批量处理 Profile 文件,例如自动创建 Profile 文件,然后给其添加指定的后处理效果,然后再设置参数,并保存为文件。特别是项目从 Legacy 的 PostProcessing V2 升级到 URP 的后处理的时候。
在工具开发的过程中发现,简单的 add 是无法将添加的后处理效果保存到 Profile 文件内的。以下为可以正常保存的方法
版本:2019.2
代码预览
//assetPath 为profile文件保存位置
var newVolume = ScriptableObject.CreateInstance<VolumeProfile>(); // 创建profile对象
AssetDatabase.CreateAsset(newVolume, assetPath);//根据对象保存文件
var uBloom = newVolume.Add<UnityEngine.Rendering.Universal.Bloom>();//给profile添加
//指定此对象在文件中的显示模式,这里是在inspector和hierarchy都不显示
uBloom.hideFlags = HideFlags.HideInHierarchy|HideFlags.HideInInspector;
uBloom.active = true;
uBloom.name = "Bloom";//起个名字
AssetDatabase.AddObjectToAsset(uBloom, assetPath);//根据路径将其添加到文件里,!!关键点!!
关键解析
打开debug模式发现,自己用代码添加的效果,显示的 type mismatch,而手动通过界面添加的效果是有一个引用文件的。
代码添加的对象丢失
-
AssetDatabase.AddObjectToAsset(uBloom, assetPath);这一句就是将我们的效果对象添加到Asset文件内
使用AddObjectToAsset后 -
uBloom.hideFlags = HideFlags.HideInHierarchy|HideFlags.HideInInspector;这一句可以将bloom的实体文件隐藏不显示。
未隐藏的效果
使用了标志后隐藏显示
网友评论