Unity代码无法创建Model类型预制体,总是生成Regular类型求助
Unity代码创建Model类型预制体失败的解决方法
你当前的代码逻辑存在核心问题:直接加载FBX的GameObject模板并调用SaveAsPrefabAsset,本质是创建了一个独立的Regular预制体,没有保留与源FBX资产的依赖关联,因此无法生成Model类型预制体。Model预制体的核心是对源模型资产的包装引用,而非复制对象数据。
修正方案
使用PrefabUtility.SaveAsPrefabAssetAndConnect替代SaveAsPrefabAsset,该方法会自动建立预制体与源FBX的依赖关系,生成Model类型预制体。修正后的代码如下:
// 加载原始FBX资产(path需指向FBX文件路径,如"Assets/Models/Character.fbx") GameObject fbxAsset = AssetDatabase.LoadAssetAtPath<GameObject>(path); // 重置变换(按需保留) fbxAsset.transform.Reset(); // 创建关联源FBX的Model预制体 PrefabUtility.SaveAsPrefabAssetAndConnect( fbxAsset, s_path, InteractionMode.UserAction ); // 刷新资源数据库确保变更生效 AssetDatabase.Refresh();
关键说明
SaveAsPrefabAssetAndConnect的作用:该方法专门用于创建与源资产绑定的预制体,Unity会自动识别源模型类型,生成Model预制体,并在资产依赖中保留FBX的引用。- 路径正确性:确保
path是原始FBX文件的路径,而非场景对象或其他预制体的路径。 - InteractionMode参数:设置为
UserAction模拟用户手动创建预制体的流程,保证资产依赖关系正确建立。
验证方法
生成预制体后,选中预制体查看Inspector面板:
- 若Prefab Mode显示为
Model Prefab - 在Dependencies面板中能看到对应的FBX文件
则说明Model类型预制体创建成功。
内容的提问来源于stack exchange,提问作者Young Huang
相关产品推荐
相关产品推荐

