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

Switch to Manual

Description

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

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

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

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

Please note that the GameObjects and Meshes only exist during the import and will be destroyed immediately afterwards. This function is called before the final Prefab is created and before it is written to disk, thus you have full control over the generated game objects and components. Any references to game objects or meshes will become invalid after the import has been completed. Thus it is not possible to create a new Prefab in a different file from OnPostprocessGameObjectWithUserProperties that references meshes in the imported fbx file. The sample JS example below adds a simple BoxCollider component if the userdata string contains "addboxcollider". The c# version is similar.

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... } } }