C# 在Unity游戏中使用插件的游戏资源的正确方法是什么?
我创建的游戏使用统一引擎,并希望强大的插件系统C# 在Unity游戏中使用插件的游戏资源的正确方法是什么?,c#,unity3d,plugins,assetbundle,C#,Unity3d,Plugins,Assetbundle,我创建的游戏使用统一引擎,并希望强大的插件系统 插件作者可以使用Unity Asset Bundle向游戏添加新资源 插件作者可以使用C#runtime向游戏添加新代码,或者我甚至可以使用类似ModTool或UMod这样的资产商店中的插件 插件作者事件可以使用和扩展游戏中的代码,如果我将其编译为单独的.dll文件 但是 插件作者如何重用游戏中的资源(如特定的着色器、材质、纹理或预制体),而不复制它们 想象一下,作者想要创建特定场景并使用我的库中的许多现有对象,或者只是向它们的项目添加一些独特的着
这一部分的主要问题是,我想将许多功能(除核心外的所有功能,例如单元、建筑等)视为单独的插件,它们重用一些核心代码和核心资源。首先,我想指出一件事,您可能知道。但我只是想确定一下 资产绑定中的脚本将是textAsset,因此不会作为脚本执行 如果希望assetbundle具有可执行代码,则需要先将其预编译到程序集中,然后使用mono反射加载。请记住,这也会使您的应用程序容易受到恶意代码的攻击。由于这一点,Windows应用商店应用程序和Windows Phone根本不支持从资产包加载脚本,而且IOS上也不支持反射,这限制了您可以针对的平台 只要场景中已经存在对所述资源的公共引用,并且您可以从assetbundles代码访问该引用,那么重用基础游戏中已经存在的资源就不是问题。您可以通过使用某种“主”组件来利用这一点,该组件包含对所有公共资源的引用 另一种选择是让您希望插件具有访问权限的所有资源都位于StreamingAssets文件夹中。请注意,StreamingAssets文件夹中的资产将可供所有人使用,因此每个人也可以对其进行编辑 统一文件:
AllCars
的游戏对象,其中包含一个游戏对象数组,每个游戏对象中都有一个预置:public GameObject[]carPrefabs代码>您可以从assetbundle的脚本中访问此数组(因为它是公共的),以使用基础游戏中AllCars脚本中引用的资源实例化新车。例如:GameObject newCar=Instantiate(FindObjectOfType().carPrefabs[0],位置,旋转)
然后会实例化一辆与阵列中第一辆车的型号搭配的GO吗?您指的是启动时间(在游戏期间)?编辑时间呢?插件的作者能在他的编辑器中看到这个汽车物体而不启动游戏吗。我假设这就是你要找的,如果我误解了,请道歉!恐怕我不知道如何让它在编辑器中可见。没关系。这是目前最好的解决方案。这并不理想,但它的解决方案。非常感谢。如果有人有其他想法,那就太好了。