Version: 5.6

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... } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961