Unity Fbx转Prefab工具

这篇具有很好参考价值的文章主要介绍了Unity Fbx转Prefab工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.功能描述

        a.可将fbx直接导出prefab。

        b.同时为prefab预先按需挂载脚本文件。

        c.同时为挂载的脚本设置参数,绑定资源等。

        d.批量化处理,递归遍历算法,高效可扩展。

 2.实现方式

 a.Editor类文章来源地址https://www.toymoban.com/news/detail-593752.html

using Lean.Touch;
using Main;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using UnityEditor;
using UnityEngine;
public  enum SystemBody
{
    [Description("Bones")]
    guge=1,
    [Description("Muscle")]
    jirou,
    [Description("Vein")]
    jingmai,
    [Description("Aetery")]
    dongmai,
    [Description("Bones")]
    neifenmi=5,
    [Description("Bones")]
    shenjing,
    [Description("Skin")]
    pifu,
    [Description("Lymph")]
    lingba,
    [Description("GenitourinrySelectable")]
    miniaoshengzhi,
    [Description("Respiratory")]
    xiaohua=10,
    [Description("Joint")]
    guanjie,
    [Description("Respiratory")]
    huxi,
}
public static class EnumExpand
{
    public static T ToEnum<T>(this string str)
    {
        return (T)Enum.Parse(typeof(T), str);
    }
}

public class Fbx2Prefab : Editor
{
   
    [MenuItem("Assets/Fbx2Prefab/Create GuGe Prefab")]
    public static void CreateGuGePre()
    {
        GameObject obj = Selection.gameObjects[0];
        GameObject pre = MonoBehaviour.Instantiate(obj);
        List<GameObject> prelist = new List<GameObject>();
        for (int i = 0; i < pre.transform.childCount; i++)
        {
            prelist.Add(pre.transform.GetChild(i).gameObject);
        }
        GameObjectTree tree = MonoBehaviour.FindObjectOfType<GameObjectTree>();
        tree.scriptObjs.Clear();
        tree.rootTransform = pre.transform;
        tree.scriptObjs.Add(MonoScript.FromScriptableObject(CreateInstance(typeof(BonesSelectable))));
        tree.scriptObjs.Add(MonoScript.FromScriptableObject(CreateInstance(typeof(LeanSelectableByFinger))));
        tree.AddMonoScript();

        var mts = Resources.FindObjectsOfTypeAll<Material>();//绑定材质球
        tree.SetCommponentValue<BonesSelectable>(mts.ToList().Find(p=>p.name== SystemBody.guge.ToString()));  

        foreach (var item in prelist)
        {
            PrefabUtility.SaveAsPrefabAsset(item, $"Assets/Prefab/{item.name}.prefab");
        }
        DestroyImmediate(pre);
    }
    [MenuItem("Assets/Fbx2Prefab/Create Jirou Prefab")]
    public static void CreateJirouPre()
    {
        SystemBody body = SystemBody.jirou;
        CreateNormalPre(body);
    }
    [MenuItem("Assets/Fbx2Prefab/Create Normal Prefab")]
    public static void CreateNormalPre()
    {
        SystemBody body = SystemBody.jirou;
        string n = Selection.gameObjects[0]?.name;
        if (string.IsNullOrEmpty(n))
        {
            Debug.LogError("未选中");
        }
        else
        {
            body = n.ToLower().ToEnum<SystemBody>();
        }
        CreateNormalPre(body);
    }
    public static void CreateNormalPre(SystemBody body)
    {
        GameObject obj = Selection.gameObjects[0];
        GameObject pre = MonoBehaviour.Instantiate(obj);
        List<GameObject> prelist = new List<GameObject>();
        for (int i = 0; i < pre.transform.childCount; i++)
        {
            prelist.Add(pre.transform.GetChild(i).gameObject);
        }
        GameObjectTree tree = MonoBehaviour.FindObjectOfType<GameObjectTree>();
        tree.scriptObjs.Clear();
        tree.rootTransform = pre.transform;
        Type t = Assembly.Load("Unity.ModelView").GetType($"Main.{body.GetDescName()}Selectable");
        tree.scriptObjs.Add(MonoScript.FromScriptableObject(Cr

到了这里,关于Unity Fbx转Prefab工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity】 预制体Prefab使用说明

    在 Unity 中,Prefab 是一个可以预先制作并重复使用的 GameObject 或组件集合,Prefab 中的 GameObject 可以有子对象和其他组件。与场景中直接创建 GameObject 不同,Prefab 可以在多个场景或项目中重复使用,并且可以轻松地进行修改和更新。Prefab 可以节省开发时间,并 提高游戏的可维

    2024年02月16日
    浏览(55)
  • 【Unity】【FBX】如何将FBX模型导入Unity

    网上能够找到不少不错的FBX模型资源,大大加速游戏开发时间。如何将这些FBX导入Unity呢? 打开Unity项目文件,进入场景。 点击Projects面板,右键选择Import New Assets 选中FBX文件后导入。Assets文件夹中就会出现相应资源。 这个时候导入的FBX只是模型,没有任何材质。继续导入

    2024年02月03日
    浏览(45)
  • Unity 之预制体(Prefab)的解释以及用法

    Unity中的预制体(Prefab)是一种重要的资源类型,用于创建和管理游戏对象(GameObject)。预制体是一种可重用的模板,可以在游戏场景中多次实例化,使开发人员能够更轻松地创建和管理大量相似的对象。以下是有关Unity预制体的详细介绍,包括其作用和用法: 作用: 重用性

    2024年02月09日
    浏览(40)
  • 第十六章 Unity 预制件prefab(上)

    本章节我们介绍一下“预制件”,也有人叫“预制体”,也就是Prefab。在游戏世界中,那些自然环境的游戏对象,我们可以提前创建在场景中,这个大家能够理解。但是,有些游戏对象,需要根据游戏逻辑来通过代码生成,例如刷新怪物,触发机关等等。Unity 的预制件系统允许

    2024年02月08日
    浏览(53)
  • 第十七章 Unity 预制件prefab(下)

    本章节我们来讲解如何编辑预制体文件。这里介绍三种打开编辑预制件的方式。第一就是通过预制件的实例游戏对象的Inspector检视面板上面的预制件“打开”按钮。 第二就是在Project工程面板中选中预制件文件(Cube.prefab),然后在Inspector检视面板中点击“打开预制件”。 第

    2024年02月04日
    浏览(28)
  • Unity AssetBundle批量打包、加载(场景、Prefab)完整流程

    1、文章介绍 2、具体思路和写法         (1)AB包的打包         (2)AB包的加载         (3)AB包卸载 3、结语 本篇博客主要起记录和学习作用,简单的介绍一下AB包批量的打包和加载AB包的方式,若各位同学有幸看到本篇博客,希望能够对你有所帮助。 (1)

    2024年02月04日
    浏览(39)
  • Unity 编辑器-查找所有未被使用的Prefab

    需求 接到一个需求,将Res里所有特效相关的prefab检查一下,没有使用的移除。 分析 先拆解一下需求,如下 代码 结果 结果如图所示。每组元素第一个为查找的prefab,之后的是使用了该prefab的预设或配表。 如果一组元素只有一个对象,则这个prefab无引用。 顶部的按钮为指定功

    2024年02月16日
    浏览(47)
  • 详解Unity预制体和预制体变体(Prefab Variant)

    一、预制体变体的创建 二、预制体与变体的绑定 三、预制体到变体的继承关系 四、变体常见API 五、变体用途 通过一个预制体创建预制体变体可以通过以下两种方法: 1.在需要创建变体的预制体上右键选择图中选项即可在预制体当前目录下创建预制体变体。  2.通过脚本进行

    2024年01月17日
    浏览(40)
  • [Unity]将物体(gameObject)与预制体(Prefab)取消关联,解绑

    在如下Hierarchy窗口中右键点击要解绑的物体  在右键菜单中选择prefab-》Unpack即可将对象与预制体解除关联      

    2024年02月11日
    浏览(46)
  • Unity Editor 遍历指定文件夹下的所有prefab

    适用场景:                  查找指定文件夹下所有的prefab并找到所有引用的图片及路径。 步骤分析:                 1、通过guid获取资源路径                 2、获取文件夹中包含后缀为.prefab的路径                 3、编辑器下加载该资源(如果对资源有编辑的话

    2024年02月04日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包