Version: Unity 6.5 Alpha (6000.5)
LanguageEnglish
  • C#

ReflectedFunction

struct in UnityEditor.ShaderApiReflection

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Information about a shader function.

This struct represents a function as reflected from shader source code. On top of information extracted directly from the syntax, such as ReturnTypeName, Parameters, and Name, it also contains Hints: metadata extracted from structured comments decorating the function.

Additional resources: ShaderIncludeReflection.ReflectedFunctions.

using UnityEditor;
using UnityEditor.ShaderApiReflection;
using UnityEngine;

// This example adds a menu item which prints information from reflected functions in any shader include
// assets selected in the project view.
public class ReflectedFunctionPrinter
{
    [MenuItem("Examples/ReflectedFunctionPrinter")]
    static void PrintReflectedFunctions()
    {
        // Visit each selected object
        foreach (Object selectedObject in Selection.objects)
        {
            // Check if the object is a ShaderInclude
            if (selectedObject is ShaderInclude includeObject)
            {
                Debug.Log("Found shader include at " + AssetDatabase.GetAssetPath(includeObject));

                // Visit each exposed function in the include
                foreach (ReflectedFunction func in includeObject.Reflection.ReflectedFunctions)
                    PrintFunction(func);
            }
        }
    }

    static void PrintFunction(ReflectedFunction func)
    {
        // Print the function's signature
        Debug.Log($"Found function with signature: {func.GetSignature()}");

        // Print the function's summary, if it exists
        if (func.Hints.TryGetValue("summary", out string funcSummary))
            Debug.Log($"{func.Name}'s doc comment: {funcSummary}");

        // Print the function's body text
        Debug.Log($"{func.Name}'s body:\n{func.GetNormalizedBodyText()}");

        // Visit each parameter
        foreach (ReflectedParameter param in func.Parameters)
        {
            // Print the parameter
            Debug.Log($"{func.Name} has parameter: {param.ToString()}");

            // Print the parameter's summary
            if (param.Hints.TryGetValue("summary", out string paramSummary))
                Debug.Log($"{param.Name}'s doc comment: {paramSummary}");
        }
    }
}

Properties

Property Description
BodyTextThe function's unprocessed body text.
EnclosingNamespaceThe namespace in which the function was defined.
FullyQualifiedNameThe function's fully qualified name, taking into account the enclosing namespace.
HintsThe function's metadata, extracted from any structured comments decorating the function.
NameThe function's name.
ParametersThe function's parameters.
ReturnTypeNameThe name of the function's return type.

Public Methods

Method Description
GetNormalizedBodyTextGets the function's body text in an easy-to-read format.
GetSignatureGets the function's signature.
ToStringGets the function's signature.