照片贴纸DIY:主要包括 以下功能:------------------------------------------------>
选择贴纸: 在底部贴纸栏选择你想创建的贴纸
创建贴纸:点击相片即可创建一张你选择样式的贴纸
旋转贴纸:贴纸顶部有个小点,默认不显示(设置的alpha),按上去可左右滑动旋转贴纸(记住是左右,没写上下😂)
缩放贴纸:缩放写了两套,鼠标缩放(主要是为了验证功能); 鼠标左或右键按住贴纸不放,滚轮缩放; #;# 手势缩放(需打包测试或者 用Unity Remote5联机测试...抱歉,我都没做,太懒了)
拖拽贴纸:按住贴纸即可拖拽,做了范围限制
删除贴纸:选中一张生成好的贴纸(抱歉,我也没写选中状态改变),按删除按钮即可删除当前贴纸
演示:
好了,上代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D;
using UnityEngine.UI;
public class StickerMgr : MonoBehaviour
{
public SpriteAtlas atlas;
public GameObject obj;
public Transform stickerRoot;
//底部选择
int curStickerId = 0;
Transform curSel = null;
//当前选中的已生成的贴纸(删除用)
public static GameObject deleteObj;
// Start is called before the first frame update
void Start()
{
}
//选择贴纸样式
public void BtnEvent_StickerSelect(Transform t)
{
curStickerId = int.Parse(t.name);
if (curSel)
{
curSel.localPosition = new Vector3(curSel.localPosition.x, curSel.localPosition.y - 25, 0);
}
t.localPosition = new Vector3(t.localPosition.x, t.localPosition.y + 25, 0);
curSel = t;
}
//点击照片生成贴纸
public void BtnEvent_ClickPhoto()
{
if (curStickerId != 0)
{
CreateSticker();
}
}
//删除贴纸
public void BtnEvent_Delete()
{
if (deleteObj)
{
Destroy(deleteObj);
deleteObj = null;
}
}
//创建一张贴纸
void CreateSticker()
{
GameObject go = Instantiate(obj)