以编程方式在Unity场景中导入资产

3

我们正在进行一个学校项目,该项目是将BIM模型加载到Unity中。我们使用.ifc文件,并将其转换为.dae格式。我们创建了一个脚本来使用EditorUtility.OpenFilePanel导入文件。我们使用IFCOpenshell的IFCConvert(命令行实用程序)。

这个过程进行得很顺利,资产出现在资产文件夹中。现在唯一要做的事情就是将资产运行时导入到层次结构中*而不是将其拖入场景或层次结构中*

我们尝试使用WWW流获取文件并将AssetBundles分配给它以及其他几种方法,但是目前没有成功。


BIM是建筑信息模型的缩写,用于在实际建造之前对建筑进行建模。https://en.wikipedia.org/wiki/Building_information_modeling - Mathijs Rutgers
1个回答

6

"现在唯一要做的就是将资产运行时导入到Hierarchy中"

除非我误解了您的意思:对于“项目”中的项目(即您的资产),如果您想将它们放入当前场景中,请将它们拖到场景中。

(即,将它们拖到Heirarchy面板中或直接拖到场景编辑器的中间。)

您是说您正在尝试自动化这个过程吗?(我真的不知道您如何这样做-任何您添加的按钮都比……只需将它们拖入更加困难。)


如果您只是想在运行时加载资源,只需查看

Resources.LoadAll()

您将学习到必须将项目放在“Resources/”文件夹中等。这已经有很好的文档记录了。关于此主题有成千上万的问答。示例代码片段:

ra = Resources.LoadAll("VO/", typeof(AudioClip) ).Cast<AudioClip>().ToArray();

这超出了QA网站提供“资源”教程的范围,但您可以在Unity3d.com上立即找到它。

请注意,如果您只是想在构建中使用特定模型,则只需将其拖动到场景中并放置在所需位置。然后在代码中:

  public GameObject yourBuilding;

使用 inspector-dragging 将变量链接到您想要的位置,然后可以根据需要使用该变量。请注意,对于复杂的大型模型,通常您将为不同的部分拥有不同的检查器变量,而甚至不必去钻取(即直接拖动“医院”,“东翼”,“走廊”等)。


是的,没错。我会更新问题。我们希望在运行时加载资产,以便它出现在场景中。 - Mathijs Rutgers
也许我们没有问对问题。问题在于运行时需要导入一个3D模型并在屏幕上显示,其中可以使用zSpace平板电脑(http://zspace.com/)来操作3D模型。我们现在可以导入模型,但是显示它现在是个问题。我们可以在层次结构中运行时拖动导入的3D模型。这就是为什么我们相信这可以自动化的原因。 - Mathijs Rutgers
我相信你只是在寻找“资源”。在这里看一下文档http://docs.unity3d.com/ScriptReference/Resources.Load.html。请注意,即使对于之前没有接触过Unity的专业程序员来说,Unity也可能会令人困惑。 - Fattie
感谢您的帮助!之前已经创建了资源文件夹并尝试使用您的方法进行加载,但是那时候没有成功,我们很快就放弃了。不过现在它确实可以工作了! :) 感谢您的解释! - Mathijs Rutgers
没有问题,在这里随时问任何问题都可以。请注意(这总是让我很烦恼),你可以拥有“任意多个资源文件夹”。这对你来说可能是方便的,也可能是凌乱的,取决于你的成长背景 :) 还要注意,还有其他的“特殊”文件夹名称,比如Editor。值得深入了解一下Unity中的“特殊文件夹名称”这个主题! - Fattie
谢谢Joe,我会的!:) - Mathijs Rutgers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接