57 lines
1.9 KiB
C#
57 lines
1.9 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
using UnityEngine.Rendering.Universal;
|
|
|
|
public static class AetheriaUrpBootstrap
|
|
{
|
|
private const string SettingsFolder = "Assets/Settings/Rendering";
|
|
private const string PipelineAssetPath = SettingsFolder + "/AetheriaURPAsset.asset";
|
|
private const string RendererAssetPath = SettingsFolder + "/AetheriaUniversalRenderer.asset";
|
|
|
|
[MenuItem("Aetheria/Rendering/Ensure URP Assets")]
|
|
public static void EnsureUrpAssetsAndAssign()
|
|
{
|
|
EnsureFolder(SettingsFolder);
|
|
|
|
var rendererData = AssetDatabase.LoadAssetAtPath<UniversalRendererData>(RendererAssetPath);
|
|
if (rendererData == null)
|
|
{
|
|
rendererData = ScriptableObject.CreateInstance<UniversalRendererData>();
|
|
AssetDatabase.CreateAsset(rendererData, RendererAssetPath);
|
|
}
|
|
|
|
var pipelineAsset = AssetDatabase.LoadAssetAtPath<UniversalRenderPipelineAsset>(PipelineAssetPath);
|
|
if (pipelineAsset == null)
|
|
{
|
|
pipelineAsset = UniversalRenderPipelineAsset.Create(rendererData);
|
|
AssetDatabase.CreateAsset(pipelineAsset, PipelineAssetPath);
|
|
}
|
|
|
|
GraphicsSettings.defaultRenderPipeline = pipelineAsset;
|
|
QualitySettings.renderPipeline = pipelineAsset;
|
|
|
|
EditorUtility.SetDirty(pipelineAsset);
|
|
EditorUtility.SetDirty(rendererData);
|
|
AssetDatabase.SaveAssets();
|
|
AssetDatabase.Refresh();
|
|
|
|
Debug.Log($"Aetheria URP asset assigned: {PipelineAssetPath}");
|
|
}
|
|
|
|
private static void EnsureFolder(string folderPath)
|
|
{
|
|
var parts = folderPath.Split('/');
|
|
var current = parts[0];
|
|
for (var i = 1; i < parts.Length; i++)
|
|
{
|
|
var next = current + "/" + parts[i];
|
|
if (!AssetDatabase.IsValidFolder(next))
|
|
{
|
|
AssetDatabase.CreateFolder(current, parts[i]);
|
|
}
|
|
|
|
current = next;
|
|
}
|
|
}
|
|
}
|