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

下面 跟着我做。

首先我 扣了一个 图。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;
    } 
}

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

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-30
  • 2021-09-27
  • 2021-12-14
  • 2022-12-23
  • 2021-12-18
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-01
  • 2022-12-23
  • 2021-04-13
  • 2021-07-04
相关资源
相似解决方案