Unity 代码实现PS的功能和局部截图及合并分享图片

本文介绍了如何在Unity中实现类似Photoshop的功能,包括截图、生成带有玩家头像和名字的图片,并进行图片合并与分享。通过使用SDK进行分享,下载服务器上的背景模板,添加玩家信息,最后保存并分享生成的图片。
摘要由CSDN通过智能技术生成

一、功能描述:
做一个获取游戏内容分享图片功能,分截图和长图分享。图片上要显示玩家自定义的头像 以及名字。

二、实现思路:
1、分享直接使用的share SDK 即可。
2、从服务器下载背景模板图片。
3、将玩家名字显示截图 生成图片。
4、下载读取头像图片
5、将名字图片和头像图标分别合并到背景模板图片。
6、保存图片到本地

三、代码实现:
1、下载图片代码
下载相关参考了一个大神的代码做了修饰。原地址点击查看

using System;
using System.IO;
using UnityEngine;

public abstract class DownloadItem {

    /// <summary>
    /// 网络资源url路径
    /// </summary>
    protected string m_srcUrl;
    /// <summary>
    /// 资源下载存放路径,不包含文件名
    /// </summary>
    protected string m_savePath;
    /// <summary>
    /// 文件名,不包含后缀
    /// </summary>
    protected string m_fileNameWithoutExt;
    /// <summary>
    /// 文件后缀
    /// </summary>
    protected string m_fileExt;
    /// <summary>
    /// 下载文件全路径,路径+文件名+后缀
    /// </summary>
    protected string m_saveFilePath;
    /// <summary>
    /// 原文件大小
    /// </summary>
    protected long m_fileLength;
    /// <summary>
    /// 当前下载好了的大小
    /// </summary>
    protected long m_currentLength;
    /// <summary>
    /// 是否开始下载
    /// </summary>
    protected bool m_isStartDownload;
    public bool isStartDownload {
        get {
            return m_isStartDownload;
        }
    }

    public DownloadItem(string url, string path) {
        m_srcUrl = url;
        m_savePath = path;
        m_isStartDownload = false;
        m_fileNameWithoutExt = Path.GetFileNameWithoutExtension(m_srcUrl);
        m_fileExt = Path.GetExtension(m_srcUrl);
        m_saveFilePath = m_savePath;//string.Format("{0}/{1}{2}", m_savePath, m_fileNameWithoutExt, m_fileExt);
    }

    /// <summary>
    /// 开始下载
    /// </summary>
    /// <param name="callback">下载完成回调</param>
    public virtual void StartDownload(MonoBehaviour behaviour,Action failedDelegate, Action completedDelegate = null,bool isImage = false) {
        if (string.IsNullOrEmpty(m_srcUrl) || string.IsNullOrEmpty(m_savePath)) {
            return;
        }
        if (behaviour == null)
            return;

        //若存放目录不存在则创建目录
        //if (!string.IsNullOrEmpty(m_saveFilePath)) {
   
        //    string dirName = Path.GetDirectoryName(m_saveFilePath);
        //    if (!Directory.Exists(dirName)) {
   
        //        Directory.CreateDirectory(dirName);
        //    }
        //}

    }

    /// <summary>
    /// 获取下载进度
    /// </summary>
    /// <returns>进度,0-1</returns>
    public abstract float GetProcess();

    /// <summary>
    /// 获取当前下载了的文件大小
    /// </summary>
    /// <returns>当前文件大小</returns>
    public abstract long GetCurrentLength();

    /// <summary>
    /// 获取要下载的文件大小
    /// </summary>
    /// <returns>文件大小</returns>
    public abstract long GetLength();

    public abstract void Destroy();
}

using System;
using System.Collections;
using System.IO;
using System.Net;
using UnityEngine;
/// <summary>
/// HTTP的方式下载,支持断点续传
/// </summary>
public class HttpDownloadItem : DownloadItem {
    /// <summary>
    /// 临时文件后缀名
    /// </summary>
    string m_tempFileExt = ".temp";
    /// <summary>
    /// 临时文件全路径
    /// </summary>
    string m_tempSaveFilePath;

    public HttpDownloadItem<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值