版本: Unity 6 (6000.0)
语言英语
  • C#

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

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

对于在导入的文件中至少附加了一个用户属性的每个 GameObject,都会调用此函数。

第二个参数字符串数组 (propNames) 包含找到的所有属性的名称。System.Object 数组 (values) 包含所有实际值。这些值可以是字符串、Vector4、布尔值、颜色、浮点数、整数类型。

此功能的典型用例是从 3dmax/maya 中对象的“用户数据”中读取数据。根据对象文本用户数据中写入的内容,您可以决定以不同的方式后处理您的 GameObject。

有关调用该函数的阶段的详细说明,请参阅AssetPostprocessor

请注意,GameObject 和网格仅在导入期间存在,并且会在之后立即销毁。此函数在创建最终预制件之前以及将其写入磁盘之前被调用,因此您可以完全控制生成的博弈对象和组件。在导入完成后,对博弈对象或网格的任何引用都将失效。因此,无法在 OnPostprocessGameObjectWithUserProperties 中从不同的文件中创建引用导入的 fbx 文件中网格的新预制件。

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