Unity-批量修改Prefab上的属性
问题描述:今天发现工程中有些prefab上的脚本丢失了一些引用,本以为手动拖拽上去搞定,后来查看其它prefab,也有类似的问题,于是写了一个小工具,批量修改下。
上代码:
[ExecuteInEditMode]
[MenuItem("Tools/Add-HitData")]
private static void AddHitData()
{
if (EditorUtility.DisplayDialog("功能确认",
"此功能会遍历8_AssetBundle/Prefab_Hero/下的全部prefab,并将prefab上的ANIMATION_DATA/HIT赋值到LeaderAction脚本中的HIT_DATA上,确定要执行吗?",
"确定"))
{
string genPath = Application.dataPath + "/8_AssetBundle/Prefab_Hero/";
string[] filesPath = Directory.GetFiles(genPath, "*.prefab", SearchOption.AllDirectories); for (int i = ; i < filesPath.Length; i++)
{
filesPath[i] = filesPath[i].Substring(filesPath[i].IndexOf("Assets")); GameObject _prefab = AssetDatabase.LoadAssetAtPath(filesPath[i], typeof(GameObject)) as GameObject;
GameObject prefabGameobject = PrefabUtility.InstantiatePrefab(_prefab) as GameObject;
LeaderAction la = prefabGameobject.GetComponent<LeaderAction>(); if (la != null)
{
if (la.HIT_DATA != null) continue;
if (prefabGameobject.transform.FindChild("ANIMATION_DATA/HIT") == null) continue;
la.HIT_DATA = prefabGameobject.transform.FindChild("ANIMATION_DATA/HIT").GetComponent<AnimationData>();
PrefabUtility.ReplacePrefab(prefabGameobject, _prefab, ReplacePrefabOptions.Default);
MonoBehaviour.DestroyImmediate(prefabGameobject);
}
else
continue; }
AssetDatabase.SaveAssets();
EditorUtility.DisplayDialog("成功", "HIT_DATA 添加完成!", "确定");
}
}
由于之前老是有同事乱点击Tools中的工具导致一些不可预料的浪费时间,于是加上了二次提示框,仅供参考。
Unity-批量修改Prefab上的属性的更多相关文章
- Unity3D Editor模式下批量修改prefab
最经遇到一个需要批量修改已经做好的prefab的问题,查了一些资料最终实现了但是还是不够完美,通过学习也发现unity的编辑器功能还是非常强大的.废话不多说直接上代码: [ExecuteInEditM ...
- Unity批量生成Prefab
在项目中有时会遇到批量生成Prefab的需求.于是写了一个编辑器,用来实现此功能. 在Hierarchy面板中选中多个GameObject,点击生成Prefab即可. 如果所选物体中包含自定义Mesh ...
- C# 如何批量修改集合元素的属性值?
我们往往会遇到要批量修改集合中元素的值,最笨的办法就是foreach循环,但本文介绍几种优雅的方法. 首先,我们准备好元素类和初始集合: 下面就是几种方法,目前并没有对性能做进一步的测试,有兴趣的童鞋 ...
- unity批量修改AssetBundleName与Variant
批量修改指定路径下的资源的AssetBundleName与Variant. 脚本代码如下: using System.Collections; using System.Collections.Gen ...
- jenkins插件Configuration Slicing plugin批量修改配置
作用 批量修改jenkins上job配置
- 关于Entity Framework采用DB First模式创建后的实体批量修改相关属性技巧
Entity Framework采用DB First模式创建实体是比较容易与方便的,修改已创建的实体在个数不多的情况下也是没问题的,但如果已创建的实体比较多,比如10个实体以上,涉及修改的地方比较多的 ...
- PowerShell 批量修改AD属性
环境:win 2008 R2 在管理工具中打开用于 windows powershell 的ActiveDirectory模块命令行窗口或打开命令提示符窗口输入PowerShell回车再输入impor ...
- [Unity工具]批量修改字体
效果图: using System.IO; using System.Text; using UnityEditor; using UnityEngine; using UnityEngine.UI; ...
- 批量修改WORD表格属性
有时候需要对word中很多表格的属性进行修改,而word无法批量修改属性,所有这里记录一个宏 Sub TableFormatter() Dim oTbl As Table, i As Integer ...
随机推荐
- day 25-1 接口类、抽象类、多态
# 接口类:python 原生不支持# 抽象类:python 原生支持的 接口类 首先我们来看一个支付接口的简单例子 from abc import abstractmethod,ABCMeta #我 ...
- EOCS跨链核心技术内幕
EOCS跨链技术的核心就是ICP模块,ICP即Inter Chain Protocol(跨链交互协议),下面着重介绍ICP工作原理和实现细节. Inter Chain Protocol(ICP) IC ...
- 哇,快看,那里有React Native的坑
一.红黑屏,我的天呀,怎么办?睡一觉吧 第一次玩React Native,按着文档来,跑着跑着,咦,红黑屏了. 怎么办?不玩了?那先放着,过两天再来看看咯. 二.粗心大意,原来还有配置没配好 好了,已 ...
- 医学图像数据(三)——TCIA部分数据下载方式
前为止,本人还没有找到不需要账号的就可以部分下载的方式,因此这里讲的是需要注册账号下载部分数据的方法. 注意:下载部分数据需要注册账号 注册账号网址:https://public.cancerimag ...
- Git(2):本地版本库的一些操作
参考链接:https://www.cnblogs.com/zhuwq585/p/6390542.html
- java学习笔记06-条件语句
java条件语句 if...else 单独使用if if(布尔表达式){ 如果布尔表达式为true,执行花括号里的代码 } public static void main(String[] args) ...
- 【转】监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通 ...
- stylus 实践
音乐分享: Broken Back - <Halcyon Birds> —————————————————————————————————————————————————————————— ...
- Gitlab_ansible_jenkins三剑客⑤jenkins Pipeline-job的使用
Pipeline-job的使用 创建Pipeline任务 找到root用户的id 编写pipeline脚本 #!groovy pipeline{ agent {node {label 'master' ...
- LNMP安装目录及配置文件位置
LNMP相关软件安装目录 Nginx 目录: /usr/local/nginx/ MySQL 目录 : /usr/local/mysql/MySQL数据库所在目录:/usr/local/mysql/v ...