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

CustomObjectIndexerAttribute.type

建议更改

成功!

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

关闭

提交失败

由于某些原因,无法提交您建议的更改。请在几分钟后重试。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

public Type type;

描述

每次索引特定类型的对象时,都会调用已注册的函数。

[CustomObjectIndexer(typeof(Shader), version = 2)]
internal static void ShaderIndexing(CustomObjectIndexerTarget context, ObjectIndexer indexer)
{
    if (!(context.target is Shader shader) || !indexer.settings.options.properties)
        return;

    var ownerPropertyType = typeof(Shader);
    for (int i = 0, end = shader.GetPropertyCount(); i != end; ++i)
    {
        var label = shader.GetPropertyName(i);

        // Keep some property name patterns
        if (s_IgnorePropertyNameRx.IsMatch(label))
            continue;

        var name = label.ToLowerInvariant();
        if (name.Length > 0 && name[0] == '_')
            name = name.Substring(1);
        switch (shader.GetPropertyType(i))
        {
            case ShaderPropertyType.Color:
                var v = shader.GetPropertyDefaultVectorValue(i);
                IndexColor(name, new Color(v.x, v.y, v.z, v.w), indexer, context.documentIndex, label, ownerPropertyType);
                break;
            case ShaderPropertyType.Vector:
                v = shader.GetPropertyDefaultVectorValue(i);
                IndexVector(name, v, indexer, context.documentIndex, label, ownerPropertyType);
                break;
            case ShaderPropertyType.Float:
                indexer.IndexNumber(context.documentIndex, name, shader.GetPropertyDefaultFloatValue(i));
                break;
        }
    }
}