AutoTile 自动拼接 学习与实践
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; } }
大致这么样子,回头我再 检查一下,有什么需要改动的地方。
做完以上,保存数据后,接下来的一章,我们开始 编写 核心的 代码。 下一篇再见
以上是关于AutoTile 自动拼接 学习与实践的主要内容,如果未能解决你的问题,请参考以下文章