Version: 2020.3

AssetPostprocessor.OnPostprocessGameObjectWithUserProperties(GameObject,string[],object[])

切换到手册

描述

为每个在导入文件中至少附加了一个用户属性的游戏对象调用此函数。

第二个参数字符串数组 (propNames) 包含找到的所有属性的名称。 System.Object 数组 (values) 包含所有实际值。参数类型可以是 string、Vector4、bool、Color、float、int。

此功能的典型用例是读取存储在 3dmax/maya 中的对象上的“userdata”。根据在对象的文本 userdata 中写入的内容,您可以决定以不同的方式对游戏对象进行后处理。

有关调用此函数时所在阶段的详细描述,请参阅 AssetPostprocessor

请注意,游戏对象和网格仅在导入期间存在,导入完成后,系统会立即将其销毁。 在创建最终预制件且在将其写入磁盘之前,系统会调用此函数,因此,您可以完全控制生成的游戏对象和组件。 导入完成后,对游戏对象或网格的所有引用都将变为无效。因此,无法通过在导入的 FBX 文件中引用网格的 OnPostprocessGameObjectWithUserProperties 在其他文件中创建新的预制件。 如果 userdata 字符串包含“addboxcollider”,下面的 JS 示例将添加一个简单的 BoxCollider 组件。c# 版本与之类似。

using UnityEngine;
using UnityEditor;
using System;
using System.Collections;

public class ExampleClass : AssetPostprocessor { void OnPostprocessGameObjectWithUserProperties( GameObject go, string[] propNames, System.Object[] values) { for (int i = 0; i < propNames.Length; i++) { string propName = propNames[i]; System.Object value = (System.Object)values[i];

Debug.Log("Propname: " + propName + " value: " + values[i]);

if (value.GetType().ToString() == "System.Int32") { int myInt = (int)value; // do something useful }

// etc... } } }