最近在项目中需要开发一套地图数据生成编辑器,记录自己在这个过程中使用的一些好用的创建和替换Prefab的方法。
PrefabUtility.CreatePrefab(localPath,obj) 这个方法可以将场景中的GameObject对象创建成Prefab,官方文档中有给出例子:

using UnityEngine;
using UnityEditor;public class Example : EditorWindow
{//Creates a new menu (Examples) with a menu item (Create Prefab)[MenuItem("Examples/Create Prefab")]static void CreatePrefab(){//Keep track of the currently selected GameObject(s)GameObject[] objectArray = Selection.gameObjects;//Loop through every GameObject in the array aboveforeach (GameObject gameObject in objectArray){//Set the path as within the Assets folder, and name it as the GameObject's name with the .prefab formatstring localPath = "Assets/" + gameObject.name + ".prefab";//Check if the Prefab and/or name already exists at the pathif (AssetDatabase.LoadAssetAtPath(localPath, typeof(GameObject))){//Create dialog to ask if User is sure they want to overwrite existing Prefabif (EditorUtility.DisplayDialog("Are you sure?","The Prefab already exists. Do you want to overwrite it?","Yes","No"))//If the user presses the yes button, create the Prefab{CreateNew(gameObject, localPath);}}//If the name doesn't exist, create the new Prefabelse{Debug.Log(gameObject.name + " is not a Prefab, will convert");CreateNew(gameObject, localPath);}}}// Disable the menu item if no selection is in place[MenuItem("Examples/Create Prefab", true)]static bool ValidateCreatePrefab(){return Selection.activeGameObject != null;}static void CreateNew(GameObject obj, string localPath){//Create a new Prefab at the path givenObject prefab = PrefabUtility.CreatePrefab(localPath, obj);PrefabUtility.ReplacePrefab(obj, prefab, ReplacePrefabOptions.ConnectToPrefab);}
}

PrefabUtility.InstantiatePrefab(obj) 这个方法是可以克隆出一个Prefab到场景中。

        string assetPath = "Assets/Prefabs/test.prefab";var prefab = AssetDatabase.LoadAssetAtPath <GameObject>(assetPath);GameObject clone = PrefabUtility.InstantiatePrefab(prefab) as GameObject;

如果是场景中的Prefab预制对象的引用丢失,可以使用这个方法来克隆出对象,引用同样可用。

Unity3d编辑器模式下创建和替换Prefab相关推荐

  1. Unity动作表情工具(编辑器模式下一边播动作一边播表情)

    一直忙于学习技术和工作好久没写博客 这次分享一下我写的一个动作表情工具 先说一下需求:美术把一帧帧表情图导出来,一张张排好序号,然后放到编辑器里面打开一个工具界面可以选动作,同时切换对应的表情,在编辑 ...

  2. UNITY编辑器模式下static变量的坑

    UNITY编辑器模式下static变量的坑 在unity中写编辑器扩展工具,如在编辑器中加个菜单,点击这个菜单项时执行打包功能. 类如下,其中的静态变量,如果每次进来不清空,则LIST会越来越大,打包 ...

  3. php读写w,PHP如何在读写(w +)模式下创建临时文件?,_PHP_ 少侠科技

    详细内容 PHP中的tmpfile()函数是一个内置函数,用于在读写(w+)模式下创建一个具有唯一名称的临时文件. 使用tmpfile()函数创建的文件在使用fclose()关闭或没有对文件句柄的剩余 ...

  4. Unity3D学习笔记之六创建更多的Prefab

           在写完第五篇后,因为不知名的原因,我突然不能够上传100KB以上的图片在博客中了.等了几天还是这样,所以我用PS把图片的分辨率一张张调低,让图片的大小都在100左右,将积攒了四篇的学习笔 ...

  5. Hive在SQL标准权限模式下创建UDF失败的问题排查

    环境: CDH 5.16 Hive 1.1.0 已开启Kerberos Hive 授权使用SQL StandardsBased Authorization模式(以下简称SSBA模式) 症状表现: 在编 ...

  6. Unity3D编辑器扩展--自定义创建圆锥体

    前言 这几天琢磨着开发个个人作品的时候,发现原来Unity3D官方没有提供圆锥体的创建功能,就自己做了个编辑器扩展.鉴于之前搜索Mesh编程的时候很少有博客把自己的算法讲清楚,这里我抛砖引玉,尽我所能 ...

  7. 实现Unity编辑器模式下的旋转

    最近在做一个模型展示的项目,我的想法是根据滑动屏幕的x方向差值和Y方向的差值,来根据世界坐标下的X轴和Y轴进行旋转,但是实习时候总是有一些卡顿.在观察unity编辑器下的旋转之后,发现编辑器下的旋转非 ...

  8. 学习OceanBase :如何在MySQL模式下创建一个用户?

    本节主要介绍如何创建一个用户. 谁可以创建用户 数据库在运行过程中,往往需要创建不同的用户,并为用户赋予相应的权限,一般被授予 CREATE USER 权限的用户可以创建用户. 由于 CREATE U ...

  9. linux vi模式替换,linux基础命令之:vi模式下查找和替换

    一.查找 查找命令 /pattern :向下查找pattern匹配字符串 ?pattern:向上查找pattern匹配字符串 使用了查找命令之后,使用如下两个键快速查找: n:按照同一方向继续查找 N ...

最新文章

  1. 基础知识——测试代码(七)
  2. 元空间和直接内存_JVM探秘:Java内存区域
  3. JLBH示例4 – QuickFix vs ChronicleFix基准化
  4. 关于Application.Lock和Lock(obj)
  5. 企业网站 源码 e-mail_临汾网站制作,B2B软件哪家好
  6. SAP License:SAP S/4HANA Cloud [ERP 云]
  7. 敏捷开发一千零一问系列之十二:敏捷实施的步骤?
  8. dockerfile实例
  9. 手机计算机字体变大,手机字体怎么调大
  10. “在禁用 UAC 时,无法激活此应用”问题解决
  11. 手把手教你批量保存花瓣图片到同一目录的技巧
  12. 粗浅看Struts2和Hibernate框架
  13. 永久域名存在吗?永久域名注册流程是什么样的?
  14. CSS3nbsp;Transitionnbsp;Transformnbsp;Animat…
  15. CocoaPods深入一点
  16. 谷歌浏览器不安全的连接牵扯的系统缺陷
  17. 成为一个15K的软件测试工程师的基本要求
  18. 手机前缀带字幕滚动筛选
  19. dockers安装redis
  20. JAVA 时间差8个小时的问题

热门文章

  1. NUIST LevOJ P1857 孤独摇滚
  2. 存储圈要“挂帅点将”,谁能挑起数智融合发展重担?
  3. IT学不好没什么,大不了躺平
  4. 关于macOS窗口的操作方法及快捷键
  5. C++实现2048小游戏(转载)
  6. SVN远程主机强迫关闭了一个现有的连接
  7. CSS边框、边距的设置
  8. mysql优化 个人笔记 非礼勿扰 -m08
  9. 魅族容器云平台自动化运维实践
  10. 【SUMO学习】初级 Hello World