AssetPostprocessor.OnPostprocessGameObjectWithUserProperties(GameObject,string[],object[])
Описание
Получает вызов для каждого GameObject, к которому в импортированном файле было прикреплено хотя бы одно свойство пользователя.
Второй аргумент строки массив (propNames) содержит все названия найденных свойств. System.Object массив (значения) содержит все фактические значения. Они могут быть типа string, Vector4, bool, Цвет, float, int
Типичным примером использования этой функции является чтение "userdata", хранящихся на объектах в 3dmax/maya. В зависимости от того, что написано в тексте userdata для объекта, вы можете решить постпроцессировать ваши GameObject по-разному.
Для подробного описания стадии, на которой функция вызвана, см. AssetPostprocessor.
Обратите внимание, что GameObjects и Meshes существуют только во время импорта и будут уничтожены сразу после этого. Эта функция вызывается перед окончательным Префаб Импорт игровых объектов и компонентов в игру происходит до того, как GameObject создается и записывается на диск, таким образом, вы имеете полный контроль над созданными игровыми объектами и компонентами. Любые ссылки на игровые объекты или меши станут недействительными после завершения импорта. Таким образом, нельзя создать новый GameObject. Префаб в другом файле от OnPostprocessGameObjectWithUserProperties который ссылается на меши в импортированном файле fbx.
using UnityEngine; using UnityEditor; using System; using System.Collections;
public class ExampleClass : AssetPostprocessor { // Increment the version number, when the AssetPostprocessors code/behavior is changed static readonly uint k_Version = 0; public override uint GetVersion() { return k_Version; }
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... } } }