书接上回
用如上回动作,将在你的指定目录(以1044?为例)按照顺序生成一些列的.png文件(注意哦,图片的大小发生了变化,这也是使用png图片的重要原因),但文件的命名是1.png、2.png.......72.png,是人物的8方向的站立图,显而易见这样的名称不易于理解使用,我们要做什么呢。
我们想要的名称为a-b-c-d.png(借鉴深蓝色右手博客内容),其中
a ==== 状态 (步行0 、骑乘1 or 飞行2.等)
b ==== 动作 (站立0 、跑动1、物理攻击2、施法3、防御4、死亡5 等)
c ==== 方向( 东&&南&&西&&北 等 如下所示 由正西开始顺时针旋转)
北 2
西北 1 东北 3
西 0 东 4
西南 7 东南 5
南 6
发现游戏中图片方向亦是如此。
d ==== 帧数 012345678等
重命名后1044?文件夹下图片大概为 0-0-0-0.png ........0-0-0-8.png 就表示 该角色 处于 步行 站立在正西方向的一些列帧。
以上步骤不能手来啊,要不然真会累死的啊 。仔细分析生成的图片文件夹将其中1,2,3,,5 这样的名字 改为 a-b-c-d.png这样的名字。
会发现 名字的构成为
不可预知的(需要你自己打开图片观察判断)前缀比如 0-0-
+
可以通过程序推断的方向
+
可以通过程序推断的帧数
== 图片的名称
估 转化为程序代码为:
public class Program { /// <summary> /// 创建模拟测试图片文件 /// </summary> /// <param name="path">测试文件目录地址</param> public static voID CreateTestfile(string path) { if(!Directory.Exists(path)){ Directory.CreateDirectory(path); } for (int i = 1; i <= 72; i++) { file.Create(string.Format("{0}\{1}.png",path,i)); } } /// <summary> /// 根据推断出来的方向数来重命名图片文件 /// </summary> /// <param name="pre">不可预知的前缀</param> /// <param name="path">目录地址</param> public static voID Movefilename(string pre,string path) { string[] files = Directory.Getfiles(path); int length = files.Length; int directionnum = InferDirectionNum(length); Movefilename(pre,directionnum); } /// <summary> /// 根据传入的方向数来重命名图片文件 /// </summary> /// <param name="pre">不可预知的前缀</param> /// <param name="path">目录地址</param> /// <param name="directionnum">自己判断的方向数</param> public static voID Movefilename(string pre,string path,int directionnum) { string[] files = Directory.Getfiles(path); int start = 0; int end = 0; int length = files.Length; int num = 0; int Frames = length / directionnum; for (int i = 1; i <= length; i++) { string item = files[i - 1]; start = item.LastIndexOf("\") + 1; end = item.LastIndexOf("."); string name = item.Substring(start,end - start); //获取图片文件名中的数字 num = int.Parse(name); //根据名字获取方向 int direction = (num - 1) / Frames; //获取当前帧数 int frame = (num - 1) % Frames; name = string.Format("{0}-{1}-{2}.png",pre,direction,frame); name = path + "\" + name; file.Move(item,name); } } /// <summary> /// 根据图片数量推断方向数(2方向 4 方向 8 方向) 推断规则 仔细观察图片文件夹有些并不适用 /// </summary> /// <param name="num">图片数量 72 52 26 具体数量记混了 仔细看下</param> /// <returns>方向数</returns> public static int InferDirectionNum(int num){ switch(num){ case 72: return 8; case 52: return 4; case 26: return 2; default : return 0; } } static voID Main(string[] args) { //CreateTestfile("G:\Test"); Movefilename("0-0","G:\Test"); } }
至此完成对图片的重命名 *** 作。总结
以上是内存溢出为你收集整理的Silverlight游戏开发之游戏资源整理篇全部内容,希望文章能够帮你解决Silverlight游戏开发之游戏资源整理篇所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)