摘要:我需要使用PhotonNetwork.InstantiateSceneObject(string prefab_name)实例化AssetBundle中的对象。
在运行时,我从互联网上下载了包含一堆预制件的Unity资产捆绑包。然后,我想使用PhotonNetwork.InstantiateSceneObject实例化某些预制件,但是此函数仅接受预制件名称字符串,但是所有预制件都在资产束中,并且仅当您首先将对象加载为预制件然后实例化时才能访问它。您不能直接将其实例化为字符串名称,就像它在Resource文件夹中一样。
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”在资产捆绑包中,我需要它像在资源文件夹中一样显示,以便我可以按名称实例化它。
[在完成这些资产后,我又该如何卸载和释放所有这些资产?
我刚刚在我们的论坛上回答了同样的问题:https://forum.photonengine.com/discussion/14956/photonnetwork-instantiatesceneobject
基本上,您只需实现自己的IPrefabPool接口,然后就可以按照想要的方式随意实例化网络对象。
请查看默认实现(例如punclasses.cs中的DefaultPool类)。
再见,
吉恩
对于卸载,我不确定,最好在Unity论坛或UA上询问