그라데이션 장면
10476 단어 Unity
크로스 렌즈로 유지해야 하는 단식이어야 하기 때문에 싱레톤 모노베하뷰는 다음과 같은 내용을 사용했다.
https://qiita.com/valbeat/items/4b0175755b0cc47d4f6e
FadeSceneManager.cs
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using ProjectLabyrinth.Utilities.Inputs;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace ProjectLabyrinth.Main.FadeSystem
{
public class FadeSceneManager : SingletonMonoBehaviour<FadeSceneManager>
{
private CanvasGroup fadeCanvas;
private static float expectedfadetime;
//シーン遷移にかかると予想される時間
public static float expectedFadetime
{
get { return expectedfadetime; }
}
// Use this for initialization
void Awake()
{
var prefab = (GameObject)Resources.Load("FadeCanvas");
var instance = Instantiate(prefab);
fadeCanvas = instance.GetComponent<CanvasGroup>();
DontDestroyOnLoad(fadeCanvas);
DontDestroyOnLoad(fadeCanvas.GetComponentInChildren<Image>());
//http://nn-hokuson.hatenablog.com/entry/2017/05/29/204702
SceneManager.activeSceneChanged += OnActiveSceneChanged;
}
private Sequence sequence;
public void ChangeSceneWithFade(float fadeiotime, float fadewaittime, string nextscenename)
{
var operation = SceneManager.LoadSceneAsync(nextscenename); //次シーンの読み込み開始
operation.allowSceneActivation = false;//シーンの変更をブロック
expectedfadetime = fadeiotime + fadewaittime;
sequence = DOTween.Sequence();
sequence
//.OnStart(InputManager.Instance.StopInput) //入力停止
.Append(fadeCanvas.DOFade(1f, fadeiotime)) //フェードアウト
.AppendCallback(() =>
{
sequence.Pause(); //シーンが変わるまで停止
operation.allowSceneActivation = true; //シーンの変更を許可
})
.AppendInterval(fadewaittime) //暗転中に停止
.Append(fadeCanvas.DOFade(0f, fadeiotime)) //フェードイン
//.OnComplete(InputManager.Instance.StartInput); //入力再開
sequence.Play();
}
void OnActiveSceneChanged(Scene prevScene, Scene nextScene)
{
sequence.Play();
}
}
}
사용 예FadeSceneManager.Instance.ChangeSceneWithFade(1f, 0f, "Stage1");
간단한 해설
화면에 덮는 검은색 그림을 준비해야 한다.
검은색 이미지의 설정 예는 바로 이런 느낌이다.UI→Image를 마우스 오른쪽 버튼으로 클릭하여 추가할 수 있습니다.RectTransform의 위치 지정 방법을 변경하는 설정을 잊지 마십시오. 화면 전체를 담백하게 하고 담백하게 합니다.
이 그림은 투명도를 최대화합니다.
var prefab = (GameObject)Resources.Load("FadeCanvas");
구문을 사용합니다.스크립트에서 Prefab을 만드는 방법을 참고했습니다.
https://qiita.com/2dgames_jp/items/8a28fd9cf625681faf87
처음과 마지막OnStart(InputManager.Instance.StopInput)
OnComplete(InputManager.Instance.StartInput)
이것은 자체 InputManager 입력을 중지하는 함수입니다.단계의 시작, 끝 등은 이런 호출 방식을 통해 시기를 조정할 수 있으니 참고하세요.
ChangeScene WithFade의 매개 변수는 다음과 같습니다.
페이드 인 타임
필드 전환 완료 후, 어두워진 상태에서 대기 시간 추가
nextcenename: 다음 장면의 이름
네.
ChangeScene WithFade에서는 α 값을 변경하여 처리됩니다.
Append Callback으로 자신을 멈추게 하세요..AppendCallback(() =>
{
sequence.Pause(); //シーンが変わるまで停止
operation.allowSceneActivation = true; //シーンの変更を許可
})
이로써 암전이 완료되면 장면이 로드되고 전환될 때까지 검게 변한 상태에서 멈추고, 전환할 때 Onactive ScenneChanged가 호출되어 명전이 시작된다.
Reference
이 문제에 관하여(그라데이션 장면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/para7/items/5ef92fdd471951fad30e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
OnStart(InputManager.Instance.StopInput)
OnComplete(InputManager.Instance.StartInput)
.AppendCallback(() =>
{
sequence.Pause(); //シーンが変わるまで停止
operation.allowSceneActivation = true; //シーンの変更を許可
})
Reference
이 문제에 관하여(그라데이션 장면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/para7/items/5ef92fdd471951fad30e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)