是否可以创建一个模型导入器,以便可以调整模型预制件的 MeshRenderer 上的属性? [英] Is it possible to create a model importer so that properties on the MeshRenderer of the model prefab can be tweaked?

查看:25
本文介绍了是否可以创建一个模型导入器,以便可以调整模型预制件的 MeshRenderer 上的属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为我的模型创建一些默认导入设置,以便在将模型导入编辑器时,我可以修改 Receive ShadowsMotion Vectors 的值、Reflection Probes 以及该模型在预制级别上的 MeshRenderer 子项的其他字段.

I want to create some default import settings for my models so that when a model is imported into the editor, I can modify the values of Receive Shadows, Motion Vectors, Reflection Probes, and other fields of the MeshRenderer children of that model on a prefab level.

这可能吗?

我更喜欢一个解决方案,以便修改模型文件的默认导入设置,并且我不需要创建模型资产文件的重复预制件.

I prefer a solution so that the default import settings of the model file are modified, and that it won't be necessary for me to create a duplicate prefab of the model asset file.

按照接受的答案的方向,这是我想出的代码来实现我想要的结果.

Going with the accepted answer's direction, here's the code I came up with to achieve my desired results.

using UnityEngine;

public class DefaultImportSettings : AssetPostprocessor
{
    void OnPostprocessModel(GameObject go) //Is called when we import a fbx or when we press apply on its settings
    {
        Renderer[] renderers = go.GetComponentsInChildren<Renderer>();
        for (int i = 0, iMax = renderers.Length; i < iMax; i++)
        {
            Renderer renderer = renderers[i];

            renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
            renderer.receiveShadows = false;
            renderer.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion;
            renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
            renderer.lightProbeUsage = UnityEngine.Rendering.LightProbeUsage.Off;

            // Other renderer modifications
        }
    }
}

推荐答案

我认为这是可能的,但很难为您需要导入的每个模型进行修改.我找到了一些文件:https://docs.unity3d.com/ScriptReference/PrefabUtility.InstantiatePrefab.html

I think it possible but it hard to modifier for each model you need import. I found some document : https://docs.unity3d.com/ScriptReference/PrefabUtility.InstantiatePrefab.html

https://docs.unity3d.com/ScriptReference/AssetPostprocessor.OnPreprocessModel.html

AssetPostprocessor.OnPreprocessModel() 方法获取模型设置,您使用 PrefabUtility.InstantiatePrefab() 创建具有自己设置的预制件.

The AssetPostprocessor.OnPreprocessModel() method to get model setting and you use PrefabUtility.InstantiatePrefab() create prefab with own setting.

这篇关于是否可以创建一个模型导入器,以便可以调整模型预制件的 MeshRenderer 上的属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆