最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Unity 图片 涂抹擦除刮刮乐 效果展示 包含 Sprite, Image, Mesh的涂抹效果

运维笔记admin9浏览0评论

Unity 图片 涂抹/擦除/刮刮乐 效果展示 包含 Sprite, Image, Mesh的涂抹效果

Unity 图片 涂抹/擦除/刮刮乐 效果展示 包含 Sprite, Image, Mesh的涂抹效果

Unity 2D图片 涂抹/擦除/刮刮乐 效果展示 包含 Sprite, Image, Mesh的涂抹效果

参数
progressText: 显示百分比的文本
maskImg: 需要擦除的图片
brush: 笔刷样式

案例
最新版完整插件下载地址:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;/// <summary>
/// 擦除Demo
/// </summary>
public class Dear31ErasureDemo : MonoBehaviour
{[SerializeField] private Text progressText;  //显示 当前擦除的进度[SerializeField] private Image maskImg;   //遮罩图 待擦除的[SerializeField] private Texture brush;  //笔刷的纹理private ScratchCardManager cardManager; //ScratchCardManager 负责ScratchCard的组件 擦除功能管理//需要在Awake中进行初始化操作//其实你放到Start里也一样。。。//但是最好Manager这类创建和实例化 放到 Awake里来做void Awake(){#region Initializevar prefab = Resources.Load<GameObject>( "Prefabs/ScratchCard" );if ( null == prefab ){throw new UnityException( "ScratchCard 预设文件找不到..." );}var instance = GameObject.Instantiate( prefab );if ( null == instance ){#if UNITY_EDITOR || ENABLE_LOGstring url = UnityEditor.AssetDatabase.GetAssetOrScenePath( prefab );Debug.LogError( $"ScratchCard 预设实例化失败: {url}", prefab );
#endifthrow new UnityException( "Prefabs/ScratchCard 预设实例化失败..." );}cardManager = instance.GetComponent<ScratchCardManager>();if( null == cardManager ){#if UNITY_EDITOR || ENABLE_LOGstring url = UnityEditor.AssetDatabase.GetAssetOrScenePath( prefab );Debug.LogError( $"ScratchCard 预设文件不包含ScratchCardManager组件: {url}", prefab );
#endifthrow new UnityException( "Prefabs/ScratchCard 预设文件不包含ScratchCardManager组件..." );}#endregioncardManager.Progress.OnProgress += OnScratchProgress;cardManager.Progress.OnCompleted += OnScratchCompleted;cardManager.RenderType = ScratchCardAsset.Core.ScratchCardRenderType.CanvasRenderer;cardManager.CanvasRendererCard = maskImg;cardManager.MainCamera = Camera.main;cardManager.BrushTexture = brush;}private void OnScratchProgress( float progress ){progressText.text = string.Format( "{0:P}", progress );}private void OnScratchCompleted( float progress ){cardManager.Progress.OnProgress -= OnScratchProgress;cardManager.Progress.OnCompleted -= OnScratchCompleted;progressText.text = string.Format( "{0:P}", progress );progressText.color = Color.green;}
}
发布评论

评论列表(0)

  1. 暂无评论