// Update is called once per frame void Update() { if (!Input.GetButton(InputMap.Type.AButton.GetInputName()) || triggered) { return; } var selected = menu.selected; var fadeData = new FadeData(1f, 1f, Color.black); this.triggered = true; if (selected == 0) { //最後のチェックポイントから StageManager.Resume(fadeData); } else if (selected == 1) { //タイトルに戻る SceneChanger.Instance().Change(SceneName.Title, fadeData); } else if (selected == 2) { //ゲーム終了 Application.Quit(); } }
private void Update() { //フェードの更新をする for (int i = mFadeList.Count - 1; i >= 0; i--) { FadeData f = mFadeList[i]; //何らかの理由で破棄されていたら if (f.mSoundInstance == null) { mFadeList.RemoveAt(i); continue; } //経過時間の更新 f.mNowTime += Time.deltaTime; f.mNowTime = Mathf.Clamp(f.mNowTime, 0.0f, f.mFadeTime); //音量の更新 Volume(f.mSoundInstance, Mathf.Lerp(f.mStartVolume, f.mEndVolume, f.mNowTime / f.mFadeTime)); //終了かの判定 if (f.mNowTime == f.mFadeTime) { mFadeList.RemoveAt(i); //終了時に破棄する設定なら if (f.mEndDestroy == true) { Destroy(f.mSoundInstance); } continue; } } }
public static void Resume(FadeData fadeData) { StageManager.resum = true; int currentStageNumber = StageDataPrefs.GetStageNumber(); string stage = StageNumber.GetStageName(currentStageNumber); SceneChanger.Instance().Change(SceneNameManager.GetKeyByValue(stage), fadeData); }
// copy constructor public FadeData(FadeData copySource) { transitionMask = copySource.transitionMask; invert = copySource.invert; flipHorizontal = copySource.flipHorizontal; flipVertical = copySource.flipVertical; delay = copySource.delay; softEdgePercent = copySource.softEdgePercent; }
void Fade(FadeData fadeData) { this.fadeData = fadeData; GetComponent <AudioSource>().clip = Resources.Load(fadeData.SoundName) as AudioClip; GetComponent <AudioSource>().Play(); StartCoroutine(DoFade()); }
public void FadeSprites(Sprite newSprite, bool tileX, bool tileY, int tileXAmount, int tileYAmount, float time) { if (isFading) { fadeQueue = new FadeData(newSprite, tileX, tileY, tileXAmount, tileYAmount, time); } else { StartCoroutine(FadeSpritesCoroutine(newSprite, tileX, tileY, tileXAmount, tileYAmount, time)); } }
IEnumerator Transition() { yield return(new WaitForSeconds(1)); FadeData fadeData = new FadeData(); fadeData.color = Color.black; fadeData.duration = 1; fadeData.SoundName = "1"; Events.Fade(fadeData); }
Fade Fadeing(float _time, float _start, float _end, System.Action _callback) { FadeData data = new FadeData { time = _time, callback = _callback, start = _start, end = _end }; que.Add(data); return(this); }
public IEnumerator FadeRoutine(FadeData fade, bool invert = false, float timeMult = 1.0f) { currentFade = fade; reverse = invert; elapsedSeconds = 0.0f; transitionDuration = fade.delay * timeMult; active = true; while (elapsedSeconds < transitionDuration) { yield return null; } AssignCommonShaderVariables(); }
IEnumerator DoAction() { yield return(new WaitForSeconds(1)); Events.OnCharacterAutomove(); yield return(new WaitForSeconds(6)); FadeData fadeData = new FadeData(); fadeData.color = Color.black; fadeData.duration = 1; fadeData.SoundName = "1"; Events.Fade(fadeData); }
public void Fade(IImage image, float duration, float sourceAlpha, float destAlpha) { if (image == null) { throw new System.ArgumentNullException("Invalid image"); } FadeData fd = new FadeData(); fd.Image = image; fd.SourceAlpha = sourceAlpha; fd.DestAlpha = destAlpha; fd.Timer.Begin(Mathf.Max(0, duration)); ApplyAlpha(image, sourceAlpha); _Fades.Add(fd); }
public void Fade(GameObject aSoundInstance, float aStartVolume, float aEndVolume, float aFadeTime, bool aEndDestroy) { FadeData f = new FadeData(); f.mSoundInstance = aSoundInstance; f.mStartVolume = aStartVolume; f.mEndVolume = aEndVolume; f.mFadeTime = aFadeTime; f.mEndDestroy = aEndDestroy; f.mNowTime = 0.0f; mFadeList.Add(f); Volume(aSoundInstance, aStartVolume); }
public PYAudioSource Fade(float from, float to, float duration = 0.1f) { if (from > Group.Volume) { from = Group.Volume; } if (to > Group.Volume) { to = Group.Volume; } _fadeData = new FadeData(from, to, duration); _fadeData.HasFader = true; return(this); }
IEnumerator Transition() { yield return(new WaitForSeconds(1)); Events.OnCharacterOpenDoor(); FadeData fadeData = new FadeData(); fadeData.color = Color.black; fadeData.duration = 1; fadeData.SoundName = "1"; Events.Fade(fadeData); yield return(new WaitForSeconds(1)); OnCharBack(); ready = false; }
// シーン切替 public void ChangeScene(SceneChangeData changeData) { // フェード中、または情報がなければ処理しない if (IsFade || changeData == null) { return; } // シーン情報初期化 _sceneList.Clear(); // フェード情報取得 _fadeData = new FadeData(); foreach (BasicFade fadeInfo in _fadeList) { // フェードアウト情報の登録 if (changeData.FadeOutID == fadeInfo.FadeID) { _fadeData.FadeOut = fadeInfo; } // フェードイン情報の登録 if (changeData.FadeInID == fadeInfo.FadeID) { _fadeData.FadeIn = fadeInfo; } // フェード情報の取得が終わったら if (_fadeData.FadeOut != null && _fadeData.FadeIn != null) { // フェード時間登録 _fadeData.FadeOutTime = changeData.FadeOutTime; _fadeData.FadeInTime = changeData.FadeInTime; // フェードアウト実行準備 _fadeData.FadeOut.FadeMode = FadeEnum.Mode.OUT; _fadeData.FadeOut.Ready(); // 次シーンを登録して終了 _fadeData.NextID = changeData.NextID; return; } } // フェード情報の取得に失敗 _fadeData = null; }
private System.Collections.IEnumerator FadeRoutine(float from, float to, float duration, System.Action callback) { float timer = 0; while ((timer < 1) && (duration > 0)) { _source.volume = Mathf.Lerp(from, to, timer); timer += Time.deltaTime / duration; yield return(null); } _source.volume = to; _fadeData = null; if (callback != null) { callback(); } }
/// <summary> /// シーンを変更するコルーチン /// </summary> /// <param name="scene">次のシーン</param> /// <param name="fade">フェードの情報</param> /// <returns></returns> private IEnumerator ChangeCoroutine(SceneName scene, FadeData fade) { if (isChanging && currentCoroutine != null) { StopCoroutine(currentCoroutine); } isChanging = true; //フェードアウトし終わるまで待機 yield return(StartCoroutine(Fade.Instance().FadeOutCoroutine(fade.fadeOutTime, fade.fadeColor))); //シーンを変更する yield return(StartCoroutine(LoadData(scene))); //フェードイン処理 yield return(StartCoroutine(Fade.Instance().FadeInCoroutine(fade.fadeInTime, fade.fadeColor))); isChanging = false; }
private void Init() { this.isReleased = false; this.fadeTime = new float?(); if (Object.op_Inequality((Object)this.stand, (Object)null)) { this.stand.SetPositionAndRotation(Vector3.get_zero(), Quaternion.get_identity()); } this.bkFadeDat = new FadeData((SimpleFade)Singleton <Scene> .Instance.sceneFade); TextScenario scenario = this.scenario; Camera main = Camera.get_main(); this._advCamera = main; Camera camera = main; scenario.AdvCamera = camera; if (Singleton <Manager.Map> .IsInstance() && Object.op_Inequality((Object)Singleton <Manager.Map> .Instance.Player, (Object)null)) { this.scenario.virtualCamera = Singleton <Manager.Map> .Instance.Player.CameraControl.ADVCamera as CinemachineVirtualCamera; } ParameterList.Init(); if ((this.scenario.isWait || this.fadeTime.HasValue) && Object.op_Inequality((Object)this.advFade, (Object)null)) { ADVFade advFade = this.advFade; float? fadeTime = this.fadeTime; double num = !fadeTime.HasValue ? 0.0 : (double)fadeTime.Value; advFade.CrossFadeAlpha(true, 1f, (float)num, true); this.scenario.isWait = true; IObservable <M0> observable = Observable.Take <Unit>(Observable.Where <Unit>((IObservable <M0>)ObservableTriggerExtensions.UpdateAsObservable((Component)this), (Func <M0, bool>)(_ => this.advFade.IsFadeInEnd)), 1); Action <Unit> action = (Action <Unit>)(_ => this.scenario.isWait = false); // ISSUE: reference to a compiler-generated field if (ADVScene.\u003C\u003Ef__mg\u0024cache0 == null) { // ISSUE: reference to a compiler-generated field ADVScene.\u003C\u003Ef__mg\u0024cache0 = new Action(ParameterList.WaitEndProc); } // ISSUE: reference to a compiler-generated field Action fMgCache0 = ADVScene.\u003C\u003Ef__mg\u0024cache0; this.updateDisposable = ObservableExtensions.Subscribe <Unit>(observable, (Action <M0>)action, fMgCache0); } this.scenario.ConfigProc(); }
private void Fade(DynValue type) { var typeString = type.String; FadeData fade; bool invert = false; if (typeString == "normal") { fade = lastFade; invert = true; } else { fade = IndexDatabase.Instance().Fades.GetData(typeString); } lastFade = fade; var globals = Global.Instance(); RunRoutineFromLua(globals.Maps.Camera.GetComponent <FadeComponent>().FadeRoutine(fade, invert)); }
private void Update() { t += Time.deltaTime; FadeData data = fades[index]; if (t > data.duration) { if (index + 1 == fades.Length && !loop) { image.color = data.targetColor; return; } ++index; data = fades[index]; t = -data.delay; } image.color = Color.Lerp(data.startColor, data.targetColor, Mathf.Max(t, 0.0f) / data.duration); }
public override IEnumerator FadeRoutine(FadeData fade, bool invert = false, float timeMult = 1) { float elapsed = 0.0f; float transitionDuration = fade.delay * timeMult; materialsToFade = new List <Material>(); if (Global.Instance().Maps.ActiveMap != null) { materialsToFade.Add(Global.Instance().Maps.Avatar.Chara.Doll.Renderer.sharedMaterial); foreach (var layer in Global.Instance().Maps.ActiveMap.layers) { materialsToFade.Add(layer.GetComponent <TilemapRenderer>()?.sharedMaterial); } } foreach (var renderer in renderersToFade) { materialsToFade.Add(renderer.sharedMaterial); } foreach (var image in imagesToFade) { materialsToFade.Add(image.material); } foreach (var text in textsToFade) { materialsToFade.Add(text.material); } while (elapsed < transitionDuration) { elapsed += Time.fixedDeltaTime; foreach (var material in materialsToFade) { AssignShaderValues(material, fade, invert, elapsed / transitionDuration); } yield return(null); } foreach (var material in materialsToFade) { AssignShaderValues(material, fade, invert, 1.0f); } }
// フェード private void Fade() { // フェードアウト情報があれば if (_fadeData.FadeOut != null) { // フェードアウトの実行 _fadeData.FadeOut.Run(); // 終了確認 if (_fadeData.FadeOut.IsEnd) { // シーン切替 LoadScene(_fadeData.NextID, LoadSceneMode.Single); // フェードアウト情報削除 _fadeData.FadeOut = null; // フェードイン実行準備 _fadeData.FadeIn.FadeMode = FadeEnum.Mode.IN; _fadeData.FadeIn.Ready(); } } // フェードイン情報があれば if (_fadeData.FadeIn != null) { // フェードインの実行 _fadeData.FadeIn.Run(); // フェードインが終わったら if (_fadeData.FadeIn.IsEnd) { // イベントシステム作成 CreateEventSystem(); // フェード終了 _fadeData = null; } } }
public override void OnLoad(object userData = null) { base.OnLoad(userData); tempData = (FadeData)userData; tempData.FadeEnterCallback?.Invoke(); switch (tempData.Mode) { case FadeMode.FadeIn: CanvasGroup.alpha = 0; CanvasGroup.DOFade(1, 0.5f).onComplete += () => { tempData.FadeInDoneCallback?.Invoke(); ReleaseSelf(false, tempData); }; break; case FadeMode.FadeOut: _FadeOut(null); break; case FadeMode.FadeInOut: CanvasGroup.alpha = 0; CanvasGroup.DOFade(1, 0.5f).onComplete += () => { Z.Subject.GetSubject("Z_FadeOutAction").First().Subscribe(_FadeOut); tempData.FadeInDoneCallback?.Invoke(); }; break; case FadeMode.WaitingThenFadeOut: CanvasGroup.alpha = 1; Z.Subject.GetSubject("Z_FadeOutAction").First().Subscribe(_FadeOut); tempData.FadeInDoneCallback?.Invoke(); break; default: break; } }
/// <summary> /// Update /// </summary> protected override void Update() { if (Global.IsGamePaused) { return; } if (_Fades.Count > 0) { int index = 0; while (index < _Fades.Count) { FadeData fd = _Fades[index]; float percent = fd.Timer.Percent; if (percent >= 1.0f) { ApplyAlpha(fd.Image, fd.DestAlpha); _Fades.RemoveAt(index); continue; } else { float alpha; if (fd.SourceAlpha < fd.DestAlpha) { alpha = Mathf.Lerp(fd.SourceAlpha, fd.DestAlpha, fd.Timer.Percent); } else { alpha = Mathf.Lerp(fd.DestAlpha, fd.SourceAlpha, 1.0f - fd.Timer.Percent); } ApplyAlpha(fd.Image, alpha); } index++; } } base.Update(); }
void LateUpdate() { #if UNITY_EDITOR if (!UnityEditor.EditorApplication.isPlaying) { if (UnityEditor.SceneView.lastActiveSceneView != null && editorShowMesh && (tileX || tileY)) { DrawMeshes(UnityEditor.SceneView.lastActiveSceneView.camera); } return; } #endif if (cam == null) { cam = Camera.main; if (cam == null) { return; } } if (!isFading && fadeQueue != null) { StartCoroutine(FadeSpritesCoroutine(fadeQueue.sprite, fadeQueue.tileX, fadeQueue.tileY, fadeQueue.tileXAmount, fadeQueue.tileYAmount, fadeQueue.time)); fadeQueue = null; } transform.position = startPos + (Vector3)((Vector2)cam.transform.position - (Vector2)startPos + _offset) * ratio; if (pixelSnap) { PixelPerfectCamera.SnapToPix(transform); } if (tileX || tileY) { DrawMeshes(cam); } }
/// <summary> /// シーンの変更 /// </summary> /// <param name="scene">次のシーン</param> /// <param name="fade">フェードの情報</param> public void Change(SceneName scene, FadeData fade) { currentCoroutine = StartCoroutine(ChangeCoroutine(scene, fade)); }
public abstract IEnumerator FadeRoutine(FadeData fade, bool invert = false, float timeMult = 1.0f);
private void AssignShaderValues(Material material, FadeData fade, bool invert, float t) { material.SetFloat("_FadeOffset", invert ? (1.0f - t) : t); material.SetInt("_Invert", fade.invert ? 1 : 0); material.SetFloat("_FadeColorMod", fade.brightnessMod); }
// copy constructor public FadeData(FadeData source) { brightnessMod = source.brightnessMod; delay = source.delay; invert = source.invert; }
private void Awake() { _fadeData = (FadeData)Resources.Load("Global/Data/BlackFadeData"); _fadeStart = (GameEvent)Resources.Load("Global/Event/StartFade"); }