/// <summary> /// 新建图片 /// </summary> /// <param name="effect"></param> private void SetImage(NewImageEffect effect) { // 获取图层 不存在则从模板新建 GameObject go = GetSpriteByDepth(effect.depth); if (go == null) { go = NewSpriteLayer(effect); } // 判断是否需要替换 VideoSprite vs = go.GetComponent <VideoSprite>(); Image im = go.GetComponent <Image>(); if (effect.movie) { if (vs == null) { go = RenewSpriteLayer(effect); } // 是动态 RawImage go.GetComponent <VideoSprite>().LoadClip(effect.state.spriteName); } else { if (im == null) { go = RenewSpriteLayer(effect); } // 静态图层 go.GetComponent <Image>().sprite = LoadImage(GetFullPath(effect)); go.GetComponent <Image>().SetNativeSize(); } // 材质 go.GetComponent <MaskableGraphic>().material = null; }
/// <summary> /// 移除某一层 /// </summary> /// <param name="depth">层编号</param> private void RemoveSpriteByDepth(NewImageEffect effect) { GameObject go = GetSpriteByDepth(effect.depth); if (go != null) { if (effect.delete) { // 完全删除 DestroyImmediate(go); } else { // 仅将image source删除 Image im = go.GetComponent <Image>(); if (im != null) { im.sprite = null; } VideoSprite vs = go.GetComponent <VideoSprite>(); if (vs != null) { vs.ClearClip(); } } } }