我使用Unity引擎创建游戏,并需要功能强大的插件系统。
但是...
插件作者如何在不复制资源的情况下重复使用我游戏中的资源(例如特定的着色器,材质,纹理或预制件)?
想象一下,那个作者想要创建特定的场景并使用我库中的许多现有对象,或者只是向其项目添加一些唯一的着色器。我现在看到的唯一方法是将整个游戏导入为资产捆绑包,删除所有冗余部分,然后导出为插件资产捆绑包,但是在这种情况下,所有项目都将重复,批次将被破坏,插件的大小将变为充气。
这部分的主要问题是,我想将许多功能(除Core以外的所有功能:例如单元,建筑物等)视为独立的插件,它们会重用一些Core代码和Core资源。
答案 0 :(得分:1)
首先,我想指出一件事,您可能知道。但是只是为了确保。
资产捆绑中的脚本将是textAsset,因此不会作为脚本执行 如果希望您的资产捆绑包具有可执行代码,则需要先将其预先编译为程序集,然后使用单反射将其加载。请记住,这会使您的应用程序容易受到恶意代码侵害。由于这种加载,Windows Store Apps和Windows Phone完全不支持从资产捆绑包中加载脚本,并且IOS上不提供反射功能,从而限制了您可以定位的平台。
只要您可以从assetbundles代码中访问场景中的资源,就可以重复使用基本游戏中已存在的资源。您可以通过拥有某种“主”组件来利用这一点,该组件拥有对所有公共资源的引用。
另一种选择是将希望插件获得访问权限的所有资源都存储在StreamingAssets文件夹中。请注意,尽管StreamingAssets文件夹中的资产对所有人都可用,并且因此每个人都可以编辑。 >
Unity文档:
编译: