//クロスフェード用のイメージを作成 protected bool TryCreateCrossFadeImage(float time, AdvGraphicInfo graphic) { if (LastResource == null) { return(false); } if (RawImage.texture == null) { return(false); } //前フレームのテクスチャを使ってクロスフェード処理を行う ReleaseTemporary(); Material material = this.Material; this.copyTemporary = RenderTextureSpace.RenderTexture.CreateCopyTemporary(0); UguiCrossFadeRawImage crossFade = this.gameObject.AddComponent <UguiCrossFadeRawImage>(); crossFade.Material = material; crossFade.CrossFade( copyTemporary, time, () => { //テクスチャを破棄 ReleaseTemporary(); Destroy(crossFade); }); return(true); }
void ReleaseCrossFadeReference() { if (crossFadeReference != null) { DestroyImmediate(crossFadeReference); crossFadeReference = null; } if (crossFade != null) { crossFade.RemoveComponentMySelf(); crossFade = null; } }
void ReleaseTemporary() { if (this.copyTemporary != null) { RenderTexture.ReleaseTemporary(this.copyTemporary); this.copyTemporary = null; } if (CrossFade != null) { CrossFade.RemoveComponentMySelf(); CrossFade = null; } }
//前フレームのテクスチャを使ってクロスフェード処理を行う internal void StartCrossFadeImage(float time) { Texture lastTexture = LastResource.File.Texture; ReleaseCrossFadeReference(); crossFadeReference = this.gameObject.AddComponent <AssetFileReference>(); crossFadeReference.Init(LastResource.File); crossFade = this.gameObject.AddComponent <UguiCrossFadeRawImage>(); crossFade.Timer.Unscaled = Engine.Time.Unscaled; crossFade.CrossFade( lastTexture, time, () => { ReleaseCrossFadeReference(); } ); }
//前フレームのテクスチャを使ってクロスフェード処理を行う internal void StartCrossFadeImage(float time) { Texture lastTexture = LastResource.File.Texture; ReleaseCrossFadeReference(); crossFadeReference = this.gameObject.AddComponent <AssetFileReference>(); crossFadeReference.Init(LastResource.File); UguiCrossFadeRawImage crossFade = this.gameObject.GetComponentCreateIfMissing <UguiCrossFadeRawImage>(); crossFade.CrossFade( lastTexture, time, () => { ReleaseCrossFadeReference(); crossFade.RemoveComponentMySelf(); } ); }