[Fix] All in one + add dice

This commit is contained in:
2026-02-23 22:24:46 +07:00
parent 4f942cd7c0
commit 2f9e082d75
1593 changed files with 474068 additions and 31 deletions
@@ -0,0 +1,86 @@
using System;
using System.Collections;
using System.Reflection;
using UnityEngine;
namespace AllIn1SpriteShader
{
public class DemoCamera : MonoBehaviour
{
[SerializeField] private Transform targetedItem = null;
[SerializeField] private All1ShaderDemoController demoController = null;
[SerializeField] private float speed = 0;
private Vector3 offset;
private Vector3 target;
private bool canUpdate = false;
private void Awake()
{
EnablePostProcessingForURP();
offset = transform.position - targetedItem.position;
StartCoroutine(SetCamAfterStart());
}
private void EnablePostProcessingForURP()
{
#if UNITY_2019_3_OR_NEWER
try
{
Type urpCameraDataType = Type.GetType("UnityEngine.Rendering.Universal.UniversalAdditionalCameraData, Unity.RenderPipelines.Universal.Runtime");
if (urpCameraDataType == null)
{
return;
}
Camera cam = GetComponent<Camera>();
if (cam == null)
{
Debug.LogWarning("[DemoCamera] No Camera component found on GameObject", this);
return;
}
Component urpCameraData = cam.GetComponent(urpCameraDataType);
if (urpCameraData == null)
{
urpCameraData = cam.gameObject.AddComponent(urpCameraDataType);
Debug.Log("[DemoCamera] Added UniversalAdditionalCameraData component for URP post processing", this);
}
PropertyInfo renderPostProcessingProperty = urpCameraDataType.GetProperty("renderPostProcessing");
if (renderPostProcessingProperty != null && renderPostProcessingProperty.CanWrite)
{
bool currentValue = (bool)renderPostProcessingProperty.GetValue(urpCameraData);
if (!currentValue)
{
renderPostProcessingProperty.SetValue(urpCameraData, true);
Debug.Log("[DemoCamera] Enabled URP post processing on camera", this);
}
}
else
{
Debug.LogWarning("[DemoCamera] Could not find or access 'renderPostProcessing' property. URP version might not support this feature.", this);
}
}
catch (Exception e)
{
Debug.LogWarning($"[DemoCamera] Failed to enable URP post processing: {e.Message}", this);
}
#endif
}
private void Update()
{
if (!canUpdate) return;
target.y = demoController.GetCurrExpositor() * demoController.expositorDistance;
transform.position = Vector3.Lerp(transform.position, target, speed * Time.deltaTime);
}
private IEnumerator SetCamAfterStart()
{
yield return null;
transform.position = targetedItem.position + offset;
target = transform.position;
canUpdate = true;
}
}
}