阶段性完成
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "LeTai.TranslucentImage.UniversalRP.Editor",
|
||||
"references": [
|
||||
"GUID:e646286fd75dc0f44bb2f84ffb34408d",
|
||||
"GUID:15fc0a57446b3144c949da3e2b9737a9"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eba807230e676224b8e8e5b8859b2e7c
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,81 @@
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
using UnityEngine.Rendering.Universal;
|
||||
|
||||
namespace LeTai.Asset.TranslucentImage.UniversalRP.Editor
|
||||
{
|
||||
[InitializeOnLoad]
|
||||
public class RendererFeatureChecker : EditorWindow
|
||||
{
|
||||
static RendererFeatureChecker()
|
||||
{
|
||||
EditorApplication.update += DoCheck;
|
||||
}
|
||||
|
||||
static void DoCheck()
|
||||
{
|
||||
EditorApplication.update -= DoCheck;
|
||||
|
||||
var pipelineAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset;
|
||||
if (pipelineAsset == null)
|
||||
return;
|
||||
|
||||
var rendererData = (ScriptableRendererData)
|
||||
typeof(UniversalRenderPipelineAsset)
|
||||
.GetProperty("scriptableRendererData", BindingFlags.Instance | BindingFlags.NonPublic)
|
||||
?.GetValue(pipelineAsset);
|
||||
|
||||
if (rendererData == null)
|
||||
return;
|
||||
|
||||
var haveFeature = rendererData.rendererFeatures.OfType<TranslucentImageBlurSource>().Any();
|
||||
|
||||
if (haveFeature)
|
||||
return;
|
||||
|
||||
const float width = 400f;
|
||||
const float height = 200f;
|
||||
var window = GetWindowWithRect<RendererFeatureChecker>(
|
||||
new Rect(
|
||||
(Screen.width - width) / 2f,
|
||||
(Screen.height - height) / 2f,
|
||||
width, height
|
||||
),
|
||||
true,
|
||||
"Translucent Image",
|
||||
true
|
||||
);
|
||||
|
||||
window.rendererData = rendererData;
|
||||
}
|
||||
|
||||
ScriptableRendererData rendererData;
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
GUILayout.Label("Missing Renderer Feature", EditorStyles.largeLabel);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
GUILayout.Label(
|
||||
"Translucent Image needs a renderer feature added to the active Renderer Asset. Do you want to add it now?",
|
||||
EditorStyles.wordWrappedLabel
|
||||
);
|
||||
|
||||
if (GUILayout.Button("More info", EditorStyles.linkLabel))
|
||||
Application.OpenURL("https://leloctai.com/asset/translucentimage/docs/articles/universalrp.html");
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
if (GUILayout.Button("Select Current Renderer Asset"))
|
||||
{
|
||||
EditorGUIUtility.PingObject(rendererData);
|
||||
Selection.activeObject = rendererData;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6d7c06f482aa58a4ea6d2e6f18f373b3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace LeTai.Asset.TranslucentImage.UniversalRP.Editor
|
||||
{
|
||||
[CustomEditor(typeof(TranslucentImageBlurSource))]
|
||||
public class TranslucentImageBlurSourceEditor : UnityEditor.Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
|
||||
var feature = (TranslucentImageBlurSource)target;
|
||||
if (feature.rendererType == RendererType.Renderer2D)
|
||||
{
|
||||
var ver = Version.Parse(Regex.Replace(Application.unityVersion, @"[^\d.]", "."));
|
||||
if (
|
||||
ver >= new Version(2023, 1, 7) ||
|
||||
(ver.Major == 2022 && ver >= new Version(2022, 3, 7))
|
||||
)
|
||||
EditorGUILayout.HelpBox("The 2D Renderer is sometimes buggy with custom renderer features at the moment.\n\n" +
|
||||
"If you're encountering problems, check if the built-in \"Full Screen Pass Renderer Feature\" is functioning correctly in the same setup. If it does not, Translucent Image is unlikely to be able to work either.\n\n" +
|
||||
"Also, make sure you're on the latest Unity patch release for your minor version", MessageType.Warning, true);
|
||||
else
|
||||
EditorGUILayout.HelpBox("This version of the 2D Renderer includes a bug that prevents Translucent Image from working correctly in many cases. (UUM-14400)", MessageType.Error, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6df7a801a41d7224f9848526015f4dd5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user