【问题标题】:How to place Blender model in Unity using script?如何使用脚本将 Blender 模型放置在 Unity 中?
【发布时间】:2015-07-19 06:27:30
【问题描述】:

我制作了 Blender 模型并将其拖到资产文件夹中(.blend,而不是 FBX)。现在我做类似的事情

var robot = GameObject.Instantiate (Resources.Load("robot")) as GameObject;
robot.transform.position = new Vector3 (description.X, description.IsRound ? description.ZSize : description.ZSize / 2f, description.Y);
robot.AddComponent<Rigidbody> ();
robot.renderer.material.color = Color.green;
robot.transform.localScale = new Vector3 (description.XSize, description.ZSize, description.YSize);
robot.transform.rotation = Quaternion.Euler (0, (float)description.Yaw.Grad, 0);
robot.transform.localScale = new Vector3 (30, 30, 30);

但是当我尝试启动它时,我在场景中什么也得不到。例如,如果我使用立方体

var robot = GameObject.CreatePrimitive(PrimitiveType.Cube);

我得到立方体。我的问题是如何正确加载搅拌机模型并从中创建 GameObject?

【问题讨论】:

  • 您使用Resources.Load而不是对预制件的引用是否有特定原因?
  • 另外,请详细说明“我在场景中什么都没有”的确切含义。你没有收到任何错误吗?场景层次结构中是否有新的游戏对象?
  • 我使用'Resource.Load'是因为我在互联网上找到了这个选项,我不明白如何使用预制件的参考。我没有收到任何错误,只是空场景。是的,场景层次结构中没有任何对象。
  • 好的,所以我必须问一个更基本的问题:您在代码中执行此操作而不是在编辑器中创建预制件有什么特别的原因吗?
  • 是的,我不能使用编辑器,因为这是代码的一部分,它使用机器人生成竞技场以进行比赛,它应该是自动化的。

标签: c# unity3d 3d blender


【解决方案1】:

Resources 用于加载从网络动态下载的资产。如果您在项目中已有资产或预制件,您只需从编辑器中的脚本链接到 Assets 文件夹中的预制件/模型文件即可。

public GameObject Model; // set it in the editor
void SomeMethod()
{
    var robot = GameObject.Instantiate (Model) as GameObject;
    robot.transform.position = new Vector3 (description.X, description.IsRound ? description.ZSize : description.ZSize / 2f, description.Y);
    robot.AddComponent<Rigidbody> ();
    robot.renderer.material.color = Color.green;
    robot.transform.localScale = new Vector3 (description.XSize, description.ZSize, description.YSize);
    robot.transform.rotation = Quaternion.Euler (0, (float)description.Yaw.Grad, 0);
    robot.transform.localScale = new Vector3 (30, 30, 30);
}

【讨论】:

  • 我的资产中有搅拌机模型,如何在模型中正确设置?
  • 您的 Assets 文件夹中有资产文件吗?
  • 因此,在脚本中公开一个公共字段,然后将文件从统一编辑器中的资产面板拖放到附加到对象的行为的属性字段中。
【解决方案2】:
  1. 您必须将搅拌机中的对象导出为 fbx 文件(从场景中删除相机和灯光)
  2. 将其拖到 assets 文件夹中并将其转换为预制件
  3. 在 Unity 中创建一个 publci GAmeObject 并在脚本中拖动预制件
  4. 使用这一行来放置它:Instantiate(myPrefab, new Vector3(0f,0f,0f), Quaternion.identity);

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 2022-10-04
    • 2022-11-05
    • 2011-04-01
    • 2021-07-16
    • 2018-08-27
    • 2023-03-24
    • 2020-05-16
    • 2017-05-27
    相关资源
    最近更新 更多