//クロスフェード用のイメージを作成 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(); crossFade.RemoveComponentMySelf(false); }); return(true); }
void ReleaseTemporary() { if (this.copyTemporary != null) { RenderTexture.ReleaseTemporary(this.copyTemporary); this.copyTemporary = null; } if (crossFade != null) { crossFade.RemoveComponentMySelf(); } }
void ReleaseCrossFadeReference() { if (crossFadeReference != null) { DestroyImmediate(crossFadeReference); crossFadeReference = null; } if (crossFade != null) { crossFade.RemoveComponentMySelf(); } }
//前フレームのテクスチャを使ってクロスフェード処理を行う 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(); } ); }