Version: 2019.4

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

マニュアルに切り替える

説明

インポートファイルで少なくとも 1つのユーザープロパティーがアタッチされた各ゲームオブジェクトに対して呼び出されます。

The second argument string array (propNames) contains all the names of the properties found. The System.Object array (values) contains all the actual values. These can be of type string, Vector4, bool, Color, float, int.

この機能の典型的なユースケースは 3ds Max / Maya オブジェクトに格納された "ユーザーデータ" の読み出しです。オブジェクトのテキストユーザーデータに書かれている内容にもとづき、ゲームオブジェクトを異なる方法で後処理できます。

関数が呼び出されるステージに関する詳細は、 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... } } }