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