unity, 保存prefab时material丢失问题

在程序运行时用replacePrefab(gameObj,prefab)或createPrefab(gameObj,prefab)保存prefab,遇到保存出来的prefab中material丢失的问题。

最后查到原因是gameObj的material成员引用的是一个material实例,而非material资源,所以保存成prefab后引用会丢失。

而导致gameObj的material成员实例化的原因是某处调用了gameObj.meshRenderer.material。

时间: 2024-08-07 04:31:42

unity, 保存prefab时material丢失问题的相关文章

Unity加载prefab时调用脚本函数顺序

加载prefab时使用两个接口: GameObject objPrefab = Resources.Load(pathName) as GameObject; GameObject frame = NGUITools.AddChild(parent, objPrefab); //parent为对象需要挂载到的父节点对象 对象在被挂载到父节点上时,会调用脚本,分为两种情况: 1.prefab初始保存为Active状态 立刻按顺序触发 Awake, OnEnable 函数, 下一帧触发Start函数

Unity中Instantiate一个prefab时需要注意的问题

在调用Instantiate()方法使用prefab创建对象时,接收Instantiate()方法返回值的变量类型必须和声明prefab变量的类型一致,否则接收变量的值会为null. 比如说,我在脚本里面定义: public GameObject myPrefab; 那么在使用这个myPrefab做Instantiate()的时候,接收返回值变量的类型也必须是GameObject,如下: GameObject newObject = Instantiate(myPrefab) as GameOb

安装Exchange 2010&2016 共存时FederatedEmail丢失

Exchange 2016出来好一阵子了,全新安装想必大家都在其他文档里面都见过了,Exchange 2016的架构模式将CAS整合进了MBX角色中,使得安装部署十分的简洁方便,只要做好前期准备,甚至直接NEXT下一步就可以搞定,具体的傻瓜式安装,我在后面的文章中给大家详细展示. 今天给大家带来的是一个问题的拍错,大致环境背景如下: 企业内现在有一台ALL IN ONE的 Exchange 2010的服务器,根据需要,现在想将Exchange 2010升级到2016.这个时候我们第一时间想到的最

Linux下使用vi新建文件保存文件时遇到错误:E212: Can't open file for writing

出现E212: Can't open file for writing的问题是由于权限问题导致的,解决方法有以下思路: 1.使用root进行登录,然后再操作. 2.在使用命令时,前面加sudo. 3.如果是多级文件夹的文件时,由于这个文件夹没有创建,所以要先创建这个文件夹,再来操作这个文件. Linux下使用vi新建文件保存文件时遇到错误:E212: Can't open file for writing

SQL Server 2008重新保存表时出错

在使用SQL Server 2008时,修改了表的字段名和类型名之后,点击保存按钮之后出现如下对话框: 解决方法: 点击Tools-->Options,在出现的对话框中点击Designers-->Table and Dababase Designers,出现如下画面,将右边的“Prevent saving changes that require table re-creation” 前的勾选去掉即可,然后点击OK按钮 SQL Server 2008重新保存表时出错,布布扣,bubuko.co

CPP-STL:用vector保存对象时保存指针的优点, 以及reserve的使用(转)

代码1 [cpp] view plaincopy #include <vector> #include <stdio.h> class A { public: A() { printf("A()/n"); } ~A() { printf("~A()/n"); } A(const A& other) { printf("other/n"); } }; int main() { A a; A b(a); A c = a

复制或保存结果时包括列标题

在SSMS(SQL Server Management Studio)中,在复制或保存结果时可以包括列标题. 在查询结果的网格窗口,在右键菜单中选择"连同标题一起复制",即可在复制时包括列标题. 但是,在右键菜单中选择"将结果另存为"时,输出结果时默认不包括列标题. 解决方案:打开"工具"-"选项",在"查询结果"-"SQL Server"-"以网络显示结果"的选项中

转载:用vector保存对象时保存指针的优点, 以及reserve的使用

#include <vector> #include <stdio.h> class A { public: A() { printf("A()/n"); } ~A() { printf("~A()/n"); } A(const A& other) { printf("other/n"); } }; int main() { A a; A b(a); A c = a; return 0; } 执行结果1 A() o

Dynamics AX R2 通过数据源保存记录时触发的方法

    我们都知道,在窗体上保存记录时,会像在表上保存时一样,触发很多方法.这里Reinhard找到了一个流程图,看看都触发了哪些方法,并且这些方法是以怎样的顺序被触发的. 窗体上数据源的Validate()方法被调用. 当Validate()方法里的Super()被调用时,该表的ValideField()  方法会被每个字段调用. Vlidate()方法里,Super()下面的代码被调用. 窗体上数据源的ValidateWrite()方法被调用. 当ValidateWrite()方法中的Sup