unity3d预制体修改与保存
2017-07-11 17:07
253 查看
给预制体添加子物体并保存,预期效果:
public class GunFireMenuItems : MonoBehaviour
{
public static string effectPrefabPath = "Assets/MuzzleFlashes 1/";
public static string effectOSXPath = "Assets/../StreamingAssets/OSX/GunFire/";
public static string effectLinuxPath = "Assets/../StreamingAssets/Linux/GunFire/";
[MenuItem ("Assets/AssetBundles/GunFire/AddGunFireEffectTag")]
public static void AddGunFireEffectTag ()
{
EditorUtility.DisplayProgressBar ("Modify Prefab", "Please wait...", 0);
var files = new DirectoryInfo (effectPrefabPath).GetFiles ();
for (int i = 0; i < files.Length; i++) {
var fileInfo = files [i];
if (fileInfo.Name.EndsWith (".prefab")) {
//Debug.Log (effectPrefabPath + fileInfo.Name);
AddEffectTag (effectPrefabPath + fileInfo.Name); //添加effectTag
EditorUtility.DisplayProgressBar ("Modify Prefab", "Please waiti...", (i + 1) / (float)files.Length);
}
}
AssetDatabase.SaveAssets ();
//去除进度条
EditorUtility.ClearProgressBar ();
}
/// <summary>
/// Adds the effect tag.
/// </summary>
/// <param name="prefabFullPath">Prefab full path.</param>
public static void AddEffectTag (string prefabFullPath)
{
GameObject tempEffectPrefab = AssetDatabase.LoadAssetAtPath<GameObject> (prefabFullPath);
GameObject tempEffectInstant = PrefabUtility.InstantiatePrefab (tempEffectPrefab) as GameObject;
//没有EffectTag则添加
foreach (Transform trans in tempEffectInstant.transform) {
if (trans.name.Contains ("EffectTag")) {
DestroyImmediate (tempEffectInstant);
return;
}
}
GameObject EffectTag = new GameObject ("EffectTag");
GameObject Gunfire = new GameObject ("Gunfire");
Gunfire.transform.parent = EffectTag.transform;
EffectTag.transform.parent = tempEffectInstant.transform;
//替换保存
PrefabUtility.ReplacePrefab (tempEffectInstant, tempEffectPrefab, ReplacePrefabOptions.ConnectToPrefab);
DestroyImmediate (tempEffectInstant);
}
}
相关文章推荐
- TFS二次开发系列:四、TFS二次开发WorkItem添加和修改、保存
- 修改图片,保存并替换原图片时,“GDI+ 中发生一般性错误”
- OpenCV01_加载、修改、保存图像
- Metro Style App开发快速入门 之XML文件读取,修改,保存等操作
- Android SDK tools安装失败, Win7修改保存Hosts提示没有管理员权限的解决办法
- clipse JDT ASTRewrite修改源码后保存
- sql server数据库的表中修改一个表的字段的数据类型后,不能保存
- 为什么在修改时保存了一遍 java 专注于细节的程序员
- SQL2008修改并保存表结构时报错的解决(阻止保存要求重新创建表的更改)
- 子窗口保存修改并关闭,同时刷新父窗口
- Mysql忘记密码但是保存以前连接数据库连接的修改密码方法
- SQL2008无法保存修改的表设计
- 修改PuTTY实现保存密码自动登录
- phpstorm 取消自动保存,修改未保存的文件显示*星号
- 修改emlog的自动保存时间
- 如何才能将修改(对元素节点增删改)后的XML文件parse回去呢(使结果保存下来)?
- 基于Windows CE的注册表在线修改及保存
- OpenCV图像的加载、显示、修改与保存
- 离开页面时检测表单元素是否被修改,提示保存的js代码
- asp.net 保存、修改没有 runat=server控件的控件值的一个解决方案