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

今天把 图像数据保存完善了一下。天冷,没打多少字,见谅。

接着昨天说的,首先我们打开u3d,做一个空物体gameobject,然后做几个sprite,如下图所示

上面的sprite 排成四个 正方形。

资源,你可以用昨天 我说的切好的图像,随意放里面。

下面我们给 gameobject 添加 代码

using UnityEngine;
using System.Collections;

public class ResourcesSprite : MonoBehaviour
{

    void Start()
    {
        OnAutoTileSave("11", "sea", 0, 3);
        OnAutoTileSave("22", "sea", 1, 3);
        OnAutoTileSave("33", "sea", 2, 3);
    }

    void Update()
    {

    }

    //根据 图片名字,键值名字,当前帧 和 总共帧 保存单例中
    void OnAutoTileSave(string path, string name, int current, int total)
    {
        object[] objs = Resources.LoadAll(path);
        Sprite[, ,] dict;
        //是否存在 键值
        if (GameModel.getInstance().dictSprite.ContainsKey(name))
        {
            dict = GameModel.getInstance().dictSprite[name];
        }
        else
        {
            dict = new Sprite[total, 4, 6];
            GameModel.getInstance().dictSprite.Add(name, dict);
        }

        int i = 0;
        foreach (object obj in objs)
        {
            Sprite sp = obj as Sprite;
            if (sp != null)
            {

                dict[current, i / 6, i % 6] = sp;
                i++;
            }
        }
        GameModel.getInstance().dictSprite[name] = dict;
    }
}

这个代码很简单,里面用到了单例,我也贴出来,防止小白不懂

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

public class GameModel
{
    public Dictionary<string, Sprite[, ,]> dictSprite;
    private static GameModel model;
    public static GameModel getInstance()
    {
        if (model == null)
        {
            model = new GameModel();

            model.init();
        }
        return model;
    }

    private void init()
    {
        dictSprite = new Dictionary<string, Sprite[, ,]>();
    }
}

单例我就不说了,说说 ResourcesSprite类,

它的功能主要是 加载资源,然后放到 字典里面去,为什么要这么写法,原因是为了 显示更加方便。

废话不多说,我们给 下面 四个 sprite,分别添加 脚本

using UnityEngine;
using System.Collections;

public class AutoTileShow : MonoBehaviour
{
    int i = 0;
    private Sprite m_Image;
    void Start()
    {
        if (!gameObject.GetComponent<SpriteRenderer>())
        {
            m_Image = gameObject.AddComponent<SpriteRenderer>().sprite;
        }
    }

    float timebattle;
    void Update()
    {
        timebattle -= Time.deltaTime;
        if (timebattle <= 0)
        {
            timebattle = .2f;//闪烁频率

            if (i == 3)
            {
                i = 0;
            }
            m_Image = GameModel.getInstance().dictSprite["sea"][i, 2, 3];
            gameObject.GetComponent<SpriteRenderer>().sprite = m_Image;
            i++;
        }
    }
}

这里 的作用是 从 单例的字典里面 找到并  显示出来。

为了让update 播放的 别这么快,我就 添加了 0.2秒 换一张图。

换图?是的,现在 显示出来的是  动画的 水,你们 按照昨天我这么搞的,结合今天的,就能看出是动画的水了。

今天先到这,打这几个字,手基本就冻麻木了,明天继续吧。

链接:http://pan.baidu.com/s/1eQSoMl0 密码:8c7m

时间: 2024-10-15 18:18:04

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

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

开始代码前,我们要做点准备工作. 下面 跟着我做. 首先我 扣了一个 图. 这个是 做 水的资源,所以是动态的,我把其余两张也扣了出来. 看起来一样,不是,这样看肯定 看不出所以然,你们先放到u3d中. 然后可以在 右下角观看,这些我就不多说了,一般小白 都会. 接着,我们要切片,大家看到我已经把11 的图 切好了. 这个切图,我想 大家应该也会吧.按照上图这样切 正方形. 算了我还是说下吧,按照上图这样 ... 这样做的目的就是把 图分成小块,老外用矩阵切图,咋工具高级,手动搞定. 下面我们要

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

《解析深度学习 语音识别实践》高清中文版PDF下载

<解析深度学习 语音识别实践>高清中文版PDF下载高清中文版PDF,全书321页带目录 下载链接:https://pan.baidu.com/s/1Ly4sdpNpcU_AwnwEVdBKLA备用链接:https://u1593575.ctfile.com/fs/1593575-330744495 本书首次专门讲述了如何将深度学习方法,特别是深度神经网络(DNN)技术应用于语音识别(ASR)领域.在过去的几年中,深度神经网络技术在语音识别领域的应用取得了前所未有的成功.这使得本书成为在深度神经

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

RabbitMQ学习及实践2---介绍及简单Java实现

一,基本概念 MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息.MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品. RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协

给HTML初学者的三十条最佳实践

1.保持标签闭合 以前,经常见到类似下面的代码(译注:这是多久以前啊……): <li>Some text here. <li>Some new text here. <li>You get the idea. 注意外面包裹的UL/OL标签被遗漏了(谁知是故意还是无意的),而且还忘记了关闭LI标签.按今天的标准来看,这是很明显的糟糕做法,应该100%避免.总之,保持闭合标签.否则,你验证html标签的时候可能遇到问题. 更好的方式 <ul> <li>