AutoTile 自动拼接(二) 学习与实践

开始代码前,我们要做点准备工作。

下面 跟着我做。

首先我 扣了一个 图。

这个是 做 水的资源,所以是动态的,我把其余两张也扣了出来。

看起来一样,不是,这样看肯定 看不出所以然,你们先放到u3d中。

然后可以在 右下角观看,这些我就不多说了,一般小白 都会。

接着,我们要切片,大家看到我已经把11 的图 切好了。

这个切图,我想 大家应该也会吧。按照上图这样切 正方形。

算了我还是说下吧,按照上图这样 。。。

这样做的目的就是把 图分成小块,老外用矩阵切图,咋工具高级,手动搞定。

下面我们要把 这些切好的图片,保存到 数组中。

之前我写过一个 保存代码。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;

public abstract class DirectionSprite : MonoBehaviour
{

    public float Speed = 0.05f;
    private Sprite m_Image;
    private float m_delta = 0;
    [HideInInspector]
    public int m_curFrame = 0;

    [HideInInspector]
    public bool open = true;

    //一个循环结束
    public abstract void nextSprite();
    private Sprite[,] dict;

    public void StartOpen(bool opens, string path)
    {
        open = opens;
        if (open)
        {
            m_Image = gameObject.GetComponent<SpriteRenderer>().sprite;

            if (m_Image == null)
            {
                m_Image = gameObject.AddComponent<SpriteRenderer>().sprite;
            }

            String_Int_Movie(path);

            show(m_curFrame);

        }
    }

    public int row, col;
    void String_Int_Movie(string path)
    {
        object[] objs = Resources.LoadAll(path);

        dict = new Sprite[row, col];

        int i = 0;
        foreach (object obj in objs)
        {
            Sprite sp = obj as Sprite;
            if (sp != null)
            {
                dict[i / col, i % col] = sp;
                i++;
            }
        }
    }

    public void UpdataSprite()
    {
        if (open)
        {
            m_delta += Time.deltaTime;
            if (m_delta > Speed)
            {
                m_delta = 0;
                m_curFrame++;
                show(m_curFrame);
            }
        }
    }
    //设置
    public void angle_frame(int Angles, int m_curFrames)
    {
        Angle = Angles;
        m_curFrame = m_curFrames;
    }

    public int FrameCount
    {
        get
        {
            return dict.Length;
        }
    }
    [HideInInspector]
    public int Angle;
    public void show(int frame)
    {
        if (frame >= col)
        {
            nextSprite();
            frame = 0;
            m_curFrame = frame;
        }
        if (Angle < 0)
        {
            Angle = 0;
        }
        if (Angle > row - 1)
        {
            Angle = row - 1;
        }
        m_Image = dict[Angle, frame];
        gameObject.GetComponent<SpriteRenderer>().sprite = m_Image;
    }
}
using UnityEngine;
using System.Collections;

public class DirectSprite : DirectionSprite {

    public int StartMovie;
    public string path;
    void Start()
    {
        open = true;
        StartOpen(open, path);
    }

    void Update()
    {
        if (StartMovie>0)
        {
            UpdataSprite();
        }
    }

    //一个循环结束
    public override void nextSprite()
    {
        StartMovie--;
        open = true;
    }
}

大致这么样子,回头我再 检查一下,有什么需要改动的地方。

做完以上,保存数据后,接下来的一章,我们开始 编写 核心的 代码。 下一篇再见

时间: 2024-09-28 18:21:11

AutoTile 自动拼接(二) 学习与实践的相关文章

AutoTile 自动拼接(三) 学习与实践

今天把 图像数据保存完善了一下.天冷,没打多少字,见谅. 接着昨天说的,首先我们打开u3d,做一个空物体gameobject,然后做几个sprite,如下图所示 上面的sprite 排成四个 正方形. 资源,你可以用昨天 我说的切好的图像,随意放里面. 下面我们给 gameobject 添加 代码 using UnityEngine; using System.Collections; public class ResourcesSprite : MonoBehaviour { void Sta

AutoTile 自动拼接(六 大结局) 学习与实践

昨天在网上找了一些资源图片,这回就不用担心 背景资源不多的问题了,现在我一边 制作,一边发布文章. 大结局文章比较多,所以估计得 更新几次,后天完工.不过先睹为快的朋友,可以来瞧瞧 各种各样,500多个,这里还是特别感谢 ,万恶的资本主义,不设密码就给我分享. 在制作前,大家看下这里的图片,和我之前的图片规格,有点不一样,他们大了一号. 细心的朋友,可以拿这张 ,和我 之前的图比较下. 哎,为了这500多张的 图,我也只能稍微改改 切图了,但做法都是一样的. 里面有一些 动画图,需要切一下,我推

AutoTile 自动拼接(四) 学习与实践

今天主要来说下,数据绑定. 之前第一章,我说到 把 资源图 画成格子,你们应该还有印象吧. 那么,当我 知道 格子数据,能否拿到 资源对应的图片呢? 大家先复习一下 第一章,发现很多格子数据 是相同的,有好多个1,好多个2 等等. 所以这里必须要定义一个方向,比如 左上角的1 ,右上角的1,左下角的1,右下角的1. 好,先把资源加载类,继续优化下 using UnityEngine; using System.Collections; public class ResourcesSprite :

ICE入门学习和实践

ICE源码安装 (一)Ice依赖软件包 (1)gcc 3.3以上. (2)Berkeley DB 4.8以上 (3)expat 2.0.1 (4)bzip2 1.0.x (5)mcpp 2.7.2 (二)安装依赖包 (1)安装编译所需软件包 用 apt-get install bulid-essential (2)安装ice所需依赖包 apt-get install libdb4.6++-dev libbz2-dev bzip2 libssl-dev libreadline5-dev libex

第五部分 架构篇 第十四章 MongoDB Replica Sets 架构(自动故障转移/读写分离实践)

说明:该篇内容部分来自红丸编写的MongoDB实战文章. 1.简介 MongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余,多机器中同一时刻只有一台是用于写操作,正是由于这个情况,为了MongoDB提供了数据一致性的保障,担当primary角色的服务能把读操作分发给Slave(详情请看前两篇关于Replica Set成员组成和理解). MongoDB高可用分为两种: Master-Slave主从复制:只需要在某一个服务启动时加上-master参数,而另外一个服务加上-slave与-so

Google App Engine 学习和实践

这个周末玩了玩Google App Engine,随手写点东西,算是学习笔记吧.不当之处,请多多指正. 作者:liigo,2009/04/26夜,大连 原创链接:http://blog.csdn.net/liigo/archive/2009/04/26/4127055.aspx 转载请注明出处:http://blog.csdn.net/liigo 一,怎么想起来玩Google App Engine了呢? 近期想写一个小程序,以便在公司的电脑和家里的电脑之间随时共享数据.但是没有现成的server

hadoop2.5.2学习及实践笔记(四)—— namenode启动过程源码概览

对namenode启动时的相关操作及相关类有一个大体了解,后续深入研究时,再对本文进行补充 >实现类 HDFS启动脚本为$HADOOP_HOME/sbin/start-dfs.sh,查看start-dfs.sh可以看出,namenode是通过bin/hdfs命令来启动 $ vi start-dfs.sh # namenodes NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -namenodes) echo "Starting namenodes o

[C++可以这样学] 二 学习的开始

二 学习的开始 1.准备工作 工欲善其事必先利其器,学编程也不例外,在学习之前我们需要准备一个IDE(Integrated Development Environment).不要急着提问,让我慢慢告诉你,所谓编程你可以简单粗暴的理解为把一堆代码(Codes)写到一个文本中,然后通过一个编译流程把他变为可执行文件.通常情况下,编译流程需要经过源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(obje

PS实现分幅扫描图片的批量自动拼接

很简单,只需两步搞定: 一.打开工具,如图所示: 二.选择图片,进行拼接: 静待结果! PS实现分幅扫描图片的批量自动拼接