AutoTile 自动拼接(二) 学习与实践
2024-08-27 07:51:13
开始代码前,我们要做点准备工作。
下面 跟着我做。
首先我 扣了一个 图。
这个是 做 水的资源,所以是动态的,我把其余两张也扣了出来。
看起来一样,不是,这样看肯定 看不出所以然,你们先放到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 = ;
[HideInInspector]
public int m_curFrame = ; [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 = ;
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 = ;
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 = ;
m_curFrame = frame;
}
if (Angle < )
{
Angle = ;
}
if (Angle > row - )
{
Angle = row - ;
}
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>)
{
UpdataSprite();
}
} //一个循环结束
public override void nextSprite()
{
StartMovie--;
open = true;
}
}
大致这么样子,回头我再 检查一下,有什么需要改动的地方。
做完以上,保存数据后,接下来的一章,我们开始 编写 核心的 代码。 下一篇再见
最新文章
- CUBRID学习笔记 48查询优化
- Android Afinal框架
- (转)android Fragments详解二:创建Fragment
- oracle 学习笔记--用户管理
- PM【terminal】
- pygame编写贪吃蛇
- [Android学习笔记]jackson库的使用
- Oracle练习
- uva 11354 - Bond(树链拆分)
- HDU 1754 I Hate It(线段树基础应用)
- jquery属性的相关js实现方法
- [刷题]算法竞赛入门经典(第2版) 4-7/UVa509 - RAID!
- Linux基础命令之总结一
- Hadoop集群环境安装
- 再议Python协程——从yield到asyncio
- bzoj2823[AHOI2012]信号塔
- js四则运算
- ResultHandler的用法
- 1.3.1、CDH 搭建Hadoop在安装之前(端口---Cloudera Manager和Cloudera Navigator使用的端口)
- Java编程的逻辑 (75) - 并发容器 - 基于SkipList的Map和Set