75 lines
2.3 KiB
C#
75 lines
2.3 KiB
C#
|
using UnityEditor;
|
|||
|
|
|||
|
namespace CurvedUI
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// This class changes the Execution Order of Scripts in CurvedUI package.
|
|||
|
/// Some of them must be executed before or after default time to work properly.
|
|||
|
/// </summary>
|
|||
|
[InitializeOnLoad]
|
|||
|
public class CurvedUIScriptOrder : Editor
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static CurvedUIScriptOrder()
|
|||
|
{
|
|||
|
ChangeScriptOrder(typeof(CurvedUITMP).Name, 100, OrderMatch.GREATER_THAN);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static void ChangeScriptOrder(string scriptName, int order, OrderMatch match = OrderMatch.EXACT)
|
|||
|
{
|
|||
|
// Iterate through all scripts (Might be a better way to do this?)
|
|||
|
foreach (MonoScript monoScript in MonoImporter.GetAllRuntimeMonoScripts())
|
|||
|
{
|
|||
|
// If found our script
|
|||
|
if (monoScript.name == scriptName)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
if(match == OrderMatch.EXACT)
|
|||
|
{
|
|||
|
// And it's not at the execution time we want already
|
|||
|
if (MonoImporter.GetExecutionOrder(monoScript) != order)
|
|||
|
{
|
|||
|
MonoImporter.SetExecutionOrder(monoScript, order);
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if (match == OrderMatch.LESSER_THAN)
|
|||
|
{
|
|||
|
// And it's not at the execution time we want already
|
|||
|
if (MonoImporter.GetExecutionOrder(monoScript) > order)
|
|||
|
{
|
|||
|
MonoImporter.SetExecutionOrder(monoScript, order);
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
if (match == OrderMatch.GREATER_THAN)
|
|||
|
{
|
|||
|
// And it's not at the execution time we want already
|
|||
|
if (MonoImporter.GetExecutionOrder(monoScript) < order)
|
|||
|
{
|
|||
|
MonoImporter.SetExecutionOrder(monoScript, order);
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
enum OrderMatch
|
|||
|
{
|
|||
|
EXACT = 0,
|
|||
|
GREATER_THAN = 1,
|
|||
|
LESSER_THAN = 2,
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|