美文网首页
Unity资源引用踩坑

Unity资源引用踩坑

作者: 江枫枫Maple | 来源:发表于2019-06-18 11:50 被阅读0次

          我们在制作资源的时候为了合批会把使用到的图片打成一张图集,某张图集只给某个特定的预制体使用。今天有同事发现某个预制体上依赖了两个模块的图集,这明显是和当时定好的资源管理方案不同的,而且在加载这个预制体的时候要加载两张图集,会占用额外的内存,和多余的加载卸载的操作。
          我们经过人工的排查,找遍了预制体所有节点下的Image组件,也没有找到依赖到第二张图集的组件。但是很神奇的是在使用unity的Find References In Scene功能可以看到确实有东西是依赖在这张图集上的,但是层级界面中显示出的很多节点上面并没有其他的图片组件,也就是其实没有依赖的。

    Find References In Scene

          没有什么别的办法,只有去查看一下生成的资源预制体中是怎么进行依赖的。
          Unity中的物体与文件,在创建之后都会生成一个对应的meta文件,这个文件中会记录资源或者文件的GUID,如果是图片或图集文件,里面还会有对应的图片的UID。这个GUID是该文件的唯一标识,如果在某预制体内引用了这个文件或图片,那么预制体文件中存储的也是这个文件或图片的GUID。

    某资源文件的meta文件

          获取到图片或图集的GUID后,我们就可以去对应的预制体文件中查找是否有引用这个GUID了。我们搜索某图片或图集的GUID后可以找到一个类似这样的代码块,可以看到这是一个MonoBehaviour类型的组件,它没有名字,但是最上面会有一个这个组件的UID,我们可以通过这个组件UID查找这个组件是绑在哪个物体上的。这里有引用到某个GUID的东西,就说明上面有引用信息啦。

    预制体文件

          我们再去查找上面的UID,可以找到一个GameObject的物体,这里可以看到这个GameObject的名字,上面绑定的组件以及其他信息。这样就很一目了然的可以看到所有引用的信息啦。

    GameObject

    参考文章:
    https://blog.csdn.net/s15100007883/article/details/86700696?tdsourcetag=s_pctim_aiomsg

    相关文章

      网友评论

          本文标题:Unity资源引用踩坑

          本文链接:https://www.haomeiwen.com/subject/deixqctx.html