【Unity】由预制体实例获取预制体资源及预制体资源路径

Unity中一个预制体对象可能处于3种状态:

  1. 位于Project中,是PrefabAsset;
  2. 位于Scene中,是PrefabInstance;
  3. 位于PrefabMode Scene中,既不是PrefabAsset也不是Prefab Instance。

下面的方法给出了获取不同状态的预制体对象所对应的预制体资源及其资源路径的方式。

/// <summary>
/// 获取预制体资源路径。
/// </summary>
/// <param name="gameObject"></param>
/// <returns></returns>
public static string GetPrefabAssetPath(GameObject gameObject)
{#if UNITY_EDITOR// Project中的Prefab是Asset不是Instanceif (UnityEditor.PrefabUtility.IsPartOfPrefabAsset(gameObject)){// 预制体资源就是自身return UnityEditor.AssetDatabase.GetAssetPath(gameObject);}// Scene中的Prefab Instance是Instance不是Assetif (UnityEditor.PrefabUtility.IsPartOfPrefabInstance(gameObject)){// 获取预制体资源var prefabAsset = UnityEditor.PrefabUtility.GetCorrespondingObjectFromOriginalSource(gameObject);return UnityEditor.AssetDatabase.GetAssetPath(prefabAsset);}// PrefabMode中的GameObject既不是Instance也不是Assetvar prefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetPrefabStage(gameObject);if (prefabStage != null){// 预制体资源:prefabAsset = prefabStage.prefabContentsRootreturn prefabStage.prefabAssetPath;}
#endif// 不是预制体return null;
}

【Unity】由预制体实例获取预制体资源及预制体资源路径相关推荐

  1. Unity游戏教程初步(六):迷宫算法与预制体

    目录 前言 项目需求 Prim算法生成迷宫 1 算法思路介绍 2 代码示例 3 用于测试的代码 预制体(预制件) 1 定义 2 构建迷宫墙体预制体 完善工程 前言 本节我们来做迷宫生成.生成迷宫的算法 ...

  2. Unity 3D游戏开发 - U3D入门 | 3D 模型重用之预制体

    父子关系 空物体 类比电脑上的文件夹,用于管理资源 Hierachy 面板右键 --> Creat Empty 创建一个空物体 父子关系 原则:移动父亲,儿子就会跟着移动.就像移动文件夹,文件夹 ...

  3. [unity3D]什么是预制体(Prefab)?如何制作预制体?如何导出预制体?预制体变体是什么?

    [unity3D]什么是预制体(Prefab)?如何制作预制体?如何导出预制体?预制体变体是什么? 0.预制体概念 1.制作预制体 2.导出预制体 3.预制体变体 0.预制体概念 将物体转成预制体之后 ...

  4. c语言-结构体实例笔记

    结构体实例 实例一览: 使用结构体存储学生的信息 Store information of a student using structure 计算二者距离(以英寸英尺为单位) Add two dis ...

  5. 【Android FFMPEG 开发】FFMPEG 获取 AVStream 音视频流 ( AVFormatContext 结构体 | 获取音视频流信息 | 获取音视频流个数 | 获取音视频流 )

    文章目录 博客简介 . FFMPEG 音视频流 获取流程 I . FFMPEG 获取音视频流信息 ( AVFormatContext 结构体 ) II . FFMPEG 获取 音视频流 数量 III ...

  6. go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别

    入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...

  7. C++结构体实例和类实例的初始化

    结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中.不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的. 一.若类和结构体所有数据成员均 ...

  8. C++结构体实例和类实例的初始化 .

    结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中.不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的. 一.若类和结构体所有数据成员均 ...

  9. Unity Shader - Making multiple shader program variants 制作shader程序多变体

    目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Making multiple shader program variants 版本:2019.1 Making mult ...

最新文章

  1. 【读书笔记《Bootstrap 实战》】3.优化站点资源、完成响应式图片、让传送带支持手势...
  2. 库克:苹果收取 30% 佣金很合理!
  3. rt-thread的定时器管理源码分析
  4. python读取大文件-使用Python读取大文件的方法
  5. Java 转换流 简介
  6. java office web apps_应用程序与 Office Web Apps 整合
  7. 如果输入的dll名字被改后应该手工删除dll
  8. GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例
  9. 基于matlab道路交通标志牌,基于MATLAB的道路交通标志识别
  10. python爬虫实时转发文章新闻;微信机器人使用;
  11. 浅析DDD领域驱动设计——一种很厉害的架构思想
  12. 用spss进行数据的标准化处理_用spss怎样对数据进行标准化
  13. word文档左侧没有显示文档的目录
  14. php实现用百度ip地址查询接口查询ip归属地
  15. python3 练习题 day02
  16. emule最新服务器地址,关于emule 服务器列表
  17. 计算机设备管理器命令,打开设备管理器的命令,教你一分钟学会最简单
  18. python获取年末,月末,季末的日期和距指定时间的天数
  19. VMware tool 和window共享文件夹,被坑了许久!!!
  20. Google 释出开源软件漏洞扫描工具 OSV-Scanner​

热门文章

  1. 过来人经验!工作五年以上的UI设计师都在干什么?
  2. 计算机安全模式启动时蓝屏,电脑蓝屏开机按f8进入安全模式后还是蓝屏的,怎么处理?...
  3. 中级计算机技术工程师报名资格,中级软件工程师证书报考条件有哪些要求?
  4. 记录一次工作中的问题以及解决(POI对于Excel的数据导出覆盖问题)
  5. 【串口按帧接收数据】
  6. UglifyJS 合并 压缩 JS文件
  7. 一、 SAP MM模块概览
  8. 定位——胖鱼HTML/css入门第八天
  9. PHP代码审计DVWA-文件包含信息获取方法
  10. 混合云架构中的数据加密