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

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

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

  • 相关阅读:
    UVALive 7456 Least Crucial Node (并查集)
    UVALive 7454 Parentheses (栈+模拟)
    HDU 5778 abs (枚举)
    HDU 5776 sum (模拟)
    HDU 5806 NanoApe Loves Sequence Ⅱ (模拟)
    HDU 5805 NanoApe Loves Sequence (模拟)
    HDU 5734 Acperience (推导)
    HDU 5842 Lweb and String (水题)
    HDU 5833 Zhu and 772002 (高斯消元)
    HDU 5835 Danganronpa (贪心)
  • 原文地址:https://www.cnblogs.com/big-zhou/p/5153774.html
Copyright © 2020-2023  润新知