AssetPostprocessor.OnPostprocessGameObjectWithUserProperties 在导入带有用户属性的游戏物体之后
function OnPostprocessGameObjectWithUserProperties (root : GameObject, propNames : string[], values : object[]) : void
Description描述
Gets called for each GameObject that had at least one userpropery attached to it in the imported file.
在导入文件中,为每个至少附加了一个用户属性的游戏物体调用。
The propNames is a string[] containing all the names of the properties found. The values is an System.Object[] containing all the actual values. These can be of type string, Vector4, bool, string, Color, float, int.
PropNames是一个string[],其中包含了所有找到的属性的名称.该值是一个object[],包含所有实际值。它们可以是string,Vector4, bool, string, Color, float, int。
Typical usecase for this feature is reading out "userdata" stored on objects in 3dmax/maya. Based on what is written in the text userdata for an object, you could decide to postprocess your GameObject in different ways. The sample below adds a simple BoxCollider component if the userdata string contains "addboxcollider".
典型的运用是从存储在3dmax/maya的对象中读取”userdata”,基于什么用户数据被写入到对象,你可以用不同的方式来后处理游戏物体。下面的例子中,如果用户数据字符串包含”addboxcollider”,就添加一个BoxCollider组件。
class MyPostprocessor extends AssetPostprocessor {
function OnPostprocessGameObjectWithUserProperties (
go : GameObject ,
propNames : String [],
values : System. Object []
)
{
for (var i : int =0; i!= propNames.Length; i++)
{
var propName : String = propNames[i];
var value : Object = values[i];
Debug.Log ("Propname: "+propName+" value: "+values[i]);
if (value.GetType() == String )
{
var s : String = value;
if (s.Contains("addboxcollider")) go.AddComponent( BoxCollider );
}
if (value.GetType() == Vector4 )
{
var v : Vector4 = value;
// do something useful.
}
if (value.GetType() == Color )
{
var c : Color = value;
// do something useful.
}
if (value.GetType() == int)
{
var myInt : int = value;
// do something useful.
}
if (value.GetType() == float)
{
var myFloat : float = value;
// do something useful
}
}
}
}