摘要:我需要使用PhotonNetwork.InstantiateSceneObject(字符串prefab_name)来实例化AssetBundle中的对象。
在运行时,我从互联网上下载了一个包含大量预制件的Unity资产捆绑包。然后,我想使用PhotonNetwork.InstantiateSceneObject实例化某些预制件,但是此函数仅接受预制件名称字符串,但是所有预制件都在资产束中,并且仅当您首先将对象加载为预制件然后实例化时才能访问它。您不能直接将其实例化为字符串名称,就像在资源文件夹中一样。
AssetBundle ab=AssetBundle.LoadFromFile("c:\assets\bundlename.android");
var prefab=ab.LoadAsset("networked_monster.prefab");
PhotonNetwork.InstantiateSceneObject("networked_monster.prefab"); <<------ this wont work, cant access asset bundle from Photon
有没有办法解开资产捆绑包中的所有预制件和其他对象的包装,以便使其看起来好像它们都位于资源文件夹中一样???然后,我将能够像这样访问它们
PhotonNetwork.InstantiateSceneObject("networked_monster.prefab");
AudioClip audio=Resources.Load("BangZoom") as AudioClip;
此处BangZoom是一个位于资产捆绑包内的wav文件,我需要它像在资源文件夹中一样显示。
“ networked_monster.prefab”也位于资产捆绑包中,我需要它像在资源文件夹中一样显示,以便我可以按名称实例化它。
在用这些资产处理完这些资产后,我又该如何卸载和释放这些资产?
答案 0 :(得分:0)
我刚刚在我们的论坛上回答了相同的问题:https://forum.photonengine.com/discussion/14956/photonnetwork-instantiatesceneobject
基本上,您只需实现自己的IPrefabPool接口,然后就可以按照想要的方式随意实例化网络对象。
请检查默认实现(例如punclasses.cs中的DefaultPool类)。
再见
吉恩
我不确定要卸载,最好在Unity论坛或UA上询问