在iPad App中动态加载3D模型

时间:2013-11-06 16:40:38

标签: ios unity3d

我需要创建一个iPad应用程序,它可以从服务器动态(从URL)加载3D模型(使用Unity创建)并显示。在编译期间,3D对象不会在应用程序内部。

请指导我,有什么选择可以做到这一点,我应该看看哪些库/技术? 我见过iSGL3D Nineveh,Cocos3D等库。但是我不确定如何在运行时加载对象。

  • 我可以使用WebService吗?
  • 或使用Unity Asset Bundles?
  • 或者其他更好的方法吗?

=============================================== ====

从我得到的回复中,似乎资产捆绑是实现目标的方式。所以我创建了一个Unity项目,然后使用它创建了一个iOS项目,并且能够测试基础知识。

现在我想将它与我现有的应用程序集成。这是在XCode 5和使用ARC和storybords和coredata等..

从Unity创建的iOS项目不使用ARC。因此,当我尝试集成这两个时,我会得到不同的错误,当我单独运行这两个项目时,我得不到这些错误。

我尝试为项目启用ARC,并使用-fno-objc-arc从统一相关类中禁用ARC。但仍有不同类型的错误。

所以我觉得有更好的方法来做到这一点。你能否告诉我将统一创建的项目与另一个iOS项目集成的最佳方法是什么?如果有任何文档或教程,那将非常有用。

1 个答案:

答案 0 :(得分:1)

你确定可以!第一步是将资产打包成资产包:

  

在某些情况下,将资产提供给a是有用的   项目没有加载它作为场景的一部分。例如,那里   可以是出现在任何场景中的角色或其他物体   游戏,但不经常使用(这可能是一个   “秘密”功能,错误消息或高分警报,说)。   此外,您甚至可能希望从单独的文件加载资产或   用于减少初始下载时间或允许可互换游戏的URL   内容。

     

Asset Bundle是一个外部资产集合。你可以有很多   资产包,因此许多不同的外部集合   资产。这些文件通常存在于构建的Unity播放器之外   坐在Web服务器上,供最终用户动态访问。

查看完整的Unity开发人员知识库article on Asset Bundles here

一旦您学会了如何将资产打包成捆绑包,您可以使用以下示例代码轻松加载它们以便在运行时使用:

function Start () {
    var www = WWW ("http:/myservermyBundle.unity3d");
    yield www;
    // Get the designated main asset and instantiate it.
    Instantiate(www.assetBundle.mainAsset);
}

有关详细信息,请参阅完整脚本参考here