# GetSignature()

> Gets the function's signature.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.ShaderApiReflection](/engine/6000.5/script-reference/unityeditor/shaderapireflection.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public string GetSignature()
```

### Returns

| Type                                                           | Description               |
| -------------------------------------------------------------- | ------------------------- |
| [string](https://learn.microsoft.com/dotnet/api/system.string) | The function's signature. |

### Remarks

Formats the function's return type, namespace, name, and parameters as one would write them in shader code.

### Examples

```csharp
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}");
        }
    }
}
```
