【发布时间】:2021-03-08 03:33:29
【问题描述】:
我有一个大房间,里面有成千上万个嵌套对象。我试图从数百个对象中选择一组表示单个对象的对象。这最初是一个草图文件,后来变成了一个预制变体并添加到场景中。
using UnityEngine;
using System.Collections;
using UnityEditor;
public class CreatePrefab : MonoBehaviour
{
[MenuItem("Extras/Create Prefab From Selection")]
static void DoCreatePrefab()
{
Transform[] transforms = Selection.transforms;
foreach (Transform t in transforms)
{
GameObject prefab = PrefabUtility.CreatePrefab("Assets/Prefabs/" + t.gameObject.name +
".prefab", t.gameObject, ReplacePrefabOptions.ReplaceNameBased);
}
}
}
所以我试图遍历选择并将它们每个都变成预制件。这很荒谬,因为总共有近 100,000 个对象,而构成椅子的螺母、螺栓、杆等所有东西都是单独的游戏对象。
我正在尝试使用 GPU 实例化来降低帧速率,但是这个导入的模型需要以某种方式转换为预制件。我正在尝试提取重复的有意义的对象(例如椅子)作为单独的椅子预制件,但问题是:
-
我不知道如何首先组合/融合构成椅子的对象
-
如果我能够选择一把椅子,我需要能够将其转换为椅子预制件。
-
我必须对每个过度重复的对象(例如椅子、桌子)重复这个过程
我从 unity 收到此错误消息:无法将预制实例的一部分保存为预制,
如何将构成椅子的各个部分组合起来并将其变成预制件?
【问题讨论】:
-
Unity 既不能处理那么多对象,也不能处理这么深的层次结构! (a nice article on Unity's own website about this。因此,您将永远以这种方式获得良好的性能。您必须在专用软件(通常是 3D 建模软件)中减少和组合对象并将这些对象导入统一.
-
@Thomas 我会接受这个答案