added some stuff

This commit is contained in:
Wong Sui Bin 2023-01-24 21:51:46 +08:00
parent 9b69003715
commit 3dbf2f9010
520 changed files with 176780 additions and 2 deletions

View file

@ -0,0 +1,130 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.Events;
namespace Lemon.GenericLib.SceneManagement {
public class SceneTransition : MonoBehaviour
{
public static SceneTransition Instance;
//singleton pattern
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
if (Instance != this)
{
Destroy(gameObject);
}
}
[SerializeField] float transitionTime;
//[SerializeField] UITransitionAnimator transitionAnimator;
[SerializeField] bool enableStartingTransition = true;
[SerializeField] UnityEvent transitionEnterFunction;
[SerializeField] UnityEvent transitionExitFunction;
private bool isTransitionAvailable = true;
// Start is called before the first frame update
void Start()
{
if (enableStartingTransition)
{
isTransitionAvailable = false;
transitionEnterFunction?.Invoke();
//transitionAnimator.TransitionIn();
StartCoroutine(EnableTransition());
}
}
public void TransitionScene(int sceneIndex)
{
if (!isTransitionAvailable) return;
isTransitionAvailable = false;
transitionExitFunction?.Invoke();
//transitionAnimator.TransitionOut();
StartCoroutine(LoadScene(sceneIndex));
}
public void TransitionScene(string sceneName)
{
if (!isTransitionAvailable) return;
isTransitionAvailable = false;
transitionExitFunction?.Invoke();
//transitionAnimator.TransitionOut();
StartCoroutine(LoadScene(sceneName));
}
public void RestartScene()
{
TransitionScene(SceneManager.GetActiveScene().buildIndex);
}
public void QuitGame()
{
transitionExitFunction?.Invoke();
StartCoroutine(QuitGameRoutine());
}
public void TransitionNextScene()
{
if (!isTransitionAvailable) return;
isTransitionAvailable = false;
transitionExitFunction?.Invoke();
//transitionAnimator.TransitionOut();
StartCoroutine(LoadScene(SceneManager.GetActiveScene().buildIndex + 1));
}
public void TransitionPreviousScene()
{
if (!isTransitionAvailable) return;
isTransitionAvailable = false;
transitionExitFunction?.Invoke();
//transitionAnimator.TransitionOut();
StartCoroutine(LoadScene(SceneManager.GetActiveScene().buildIndex - 1));
}
public void TransitionScene(int sceneIndex, bool useAnimation = true)
{
transitionExitFunction?.Invoke();
// transitionAnimator.TransitionOut();
StartCoroutine(LoadScene(sceneIndex));
}
IEnumerator LoadScene(int sceneIndex)
{
yield return new WaitForSeconds(transitionTime);
SceneManager.LoadScene(sceneIndex);
}
IEnumerator LoadScene(string sceneName)
{
yield return new WaitForSeconds(transitionTime);
SceneManager.LoadScene(sceneName);
}
IEnumerator EnableTransition()
{
yield return new WaitForSeconds(transitionTime);
isTransitionAvailable = true;
}
IEnumerator QuitGameRoutine()
{
yield return new WaitForSeconds(transitionTime);
Application.Quit();
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 76ad778d7bf1bbc41bacdfd410da4a84
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,55 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Lemon.GenericLib.SceneManagement
{
public class TransitionUI : MonoBehaviour
{
[SerializeField] private CanvasGroup canvasGroup;
[SerializeField] private bool useDefaultFadeTransition;
[SerializeField] public float effectDuration;
[SerializeField] private LeanTweenType fadeEffectType;
//[SerializeField] float threshold;
//[SerializeField] float rate;
//[SerializeField] GameObject transitionObject;
private float targetAlpha = 1;
public void TransitionAnimationEnter()
{
targetAlpha = 0;
if (useDefaultFadeTransition)
{
canvasGroup.LeanAlpha(targetAlpha, effectDuration).setEase(fadeEffectType).setOnComplete(() => { canvasGroup.blocksRaycasts = false; });
return;
}
}
public void TransitionAnimationExit()
{
targetAlpha = 1;
if (useDefaultFadeTransition)
{
canvasGroup.LeanAlpha(targetAlpha, effectDuration).setEase(fadeEffectType).setOnComplete(() => { canvasGroup.blocksRaycasts = true; });
return;
}
}
//float alpha = 0;
//public void Update() {
// alpha = canvasGroup.alpha;
// alpha = Mathf.Lerp(alpha, targetAlpha, rate * Time.deltaTime);
// canvasGroup.alpha = alpha;
// canvasGroup.blocksRaycasts = (alpha > threshold);
//}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: cdf26c62e5d4b2d4490ef743edfbe89b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: