之前预研过2D骨骼动画编辑工具SPINE,感觉其比cocosStudio及Unity3D自带的骨骼动画编辑器(原生Sprite Tree或Uni2D)要更适合有3DSMax习惯的美术,即Spine更容易被美术上手。因为当时教程极少,官网的文字说明还是英文,所以写了一个简明扼要的文档,还是抛砖引玉。之后我就把具体的研究工作交给技术美术了。虽然项目一直还没使用上,但是如果做手机上性价比极高表现力极强的2D骨骼动画,想干掉刀塔传奇动画效果、为妹子加点儿乳摇裙摆无锯齿动画的,非常推荐,

曾经写DEMO使用过Spine的资源,把一堆美术输出的文件导入SPINE真是好累。于是我写了一个算是两键Import Unity的工具,贴代码片段吧,工程就不发了。还是抛砖引玉,以下是双键的代码。

第一键、批量修改SPine输出的JSON文件后缀:我用PY写的脚本,脚本直接贴了。然后将修改好的文件覆盖到UNITY3D的资源目录内。

  1. # -*- coding: cp936 -*-
  2. #hElloHuAn
  3.  
  4. import os
  5. import string
  6.  
  7. dirName = os.getcwd()
  8. print(dirName)
  9.  
  10. li=os.listdir(dirName)
  11. for filename in li:
  12. newname = filename
  13. #print (newname)
  14. filtername = newname.split(".")
  15. if filtername[-1]=="atlas":
  16. print (filtername)
  17. newname = newname + ".txt"
  18. os.rename(filename,newname)
  19. print newname, "+txt successfully"
  20.  
  21. if filtername[-1]=="json":
  22. print (filtername)
  23. newname = newname + ".txt"
  24. os.rename(filename,newname)
  25. print newname, "+txt successfully"

  

第二键,在Unity的Project面板找到刚刚拷贝的Spine资源目录,右键进行生成UNITY3D直接使用的Spine数据,并在Scene窗口中预览:

资源来源于其它手游,通过技术手段获取,仅用于技术交流

第二键的代码也比较简单:需要满足一定的制作规范:

/// 制作规范:统一模型所有的不同类型的资源的名称必须相同,并与目录名一致:
/// SPINENAME下有SPINENAME.png\ SPINENAME.json.txt\ SPINENAME.atlas.txt

  1. [MenuItem("Assets/batchCreateSpineData")]
  2. static public void BatchCreateSpineData()
  3. {
  4. string dirName = "";
  5. string spineFileName = BatchCreateSpineDataMethod(ref dirName);
  6. Debug.Log(spineFileName);
  7. Debug.Log(dirName);
  8.  
  9. string textureName = dirName + spineFileName + ".png";
  10. string jsonFileName = dirName + spineFileName + ".json.txt";
  11. string atlasFileName = dirName + spineFileName + ".atlas.txt";
  12.  
  13. Material mat;
  14. ///1、 创建材质,并指贴图和shader
  15. {
  16. Shader shader = Shader.Find("Unlit/Alpha_zorro");
  17. mat = new Material(shader);
  18. Texture tex = Resources.LoadAssetAtPath(textureName, typeof(Texture)) as Texture;
  19. mat.SetTexture("_MainTex", tex);
  20. AssetDatabase.CreateAsset(mat, dirName + spineFileName + ".mat");
  21. AssetDatabase.SaveAssets();
  22. }
  23.  
  24. ///2、 创建atlas,并指xx
  25. AtlasAsset m_AtlasAsset = AtlasAsset.CreateInstance<AtlasAsset>();
  26. AssetDatabase.CreateAsset(m_AtlasAsset, dirName + spineFileName + ".asset");
  27. Selection.activeObject = m_AtlasAsset;
  28.  
  29. TextAsset textAsset = Resources.LoadAssetAtPath(atlasFileName, typeof(TextAsset)) as TextAsset;
  30. m_AtlasAsset.atlasFile = textAsset;
  31. m_AtlasAsset.materials = new Material[1];
  32. m_AtlasAsset.materials[0] = mat;
  33. AssetDatabase.SaveAssets();
  34.  
  35. ///3、 创建SkeletonDataAsset,并指相关
  36. SkeletonDataAsset m_skeltonDataAsset = SkeletonDataAsset.CreateInstance<SkeletonDataAsset>();
  37. AssetDatabase.CreateAsset(m_skeltonDataAsset, dirName + spineFileName + " AnimationData.asset");
  38. Selection.activeObject = m_skeltonDataAsset;
  39.  
  40. m_skeltonDataAsset.atlasAsset = m_AtlasAsset;
  41. TextAsset m_jsonAsset = Resources.LoadAssetAtPath(jsonFileName, typeof(TextAsset)) as TextAsset;
  42. m_skeltonDataAsset.skeletonJSON = m_jsonAsset;
  43. AssetDatabase.SaveAssets();
  44.  
  45. /// 创建场景物件
  46. GameObject gameObject = new GameObject(spineFileName, typeof(SkeletonAnimation)) ;
  47. EditorUtility.FocusProjectWindow();
  48. Selection.activeObject = gameObject;
  49.  
  50. SkeletonAnimation m_skelAnim = gameObject.GetComponent<SkeletonAnimation>();
  51. m_skelAnim.skeletonDataAsset = m_skeltonDataAsset;
  52. }

于是双键合璧了。 

 说一下写这个的意义:

对于美术资源导入UNITY3D中,一般都是美术来做,这个仍然属于资源输出的范畴,而美术人员对于新工具复杂使用的抗拒能力,繁冗流程,重复劳动的效率浪费,心情落差,对于个人以及集体都是一种损失。当然写这个的最初动机是因为,美术将资源导入UNITY做不好,会给程序员留坑来查,或者会推给程序员来做,我为了让自己省事儿!所以我写了这个工具,流程变得简单,操作变得轻松,美术与程序关系变得激情和谐。

我所做的是一种变相提高美术工具用户体验的事情,是当前移动互联网下技术改变世界改变生产力的必然产物。没几行代码,简单算一下,一个Spine资源的导入会节省10分钟时间,且不说会有无穷的迭代和返工,即使项目周期的五十个SPINE资源,这已经为团队节约了500分钟8个小时几百上千块钱的成本,还带来了舒爽的心情,和谐的关系。这个帐一算太值了。

OVER。

最后帮团队做个广告:

极其看中员工素质培养,极其注重制作用户、客户端、美术“(用户体验)”的游戏、代码、工具的团队,诚求各位业内有缘人。地点北京、上海。站内联系。

Spine输出资源一键入Unity3D工具代码的更多相关文章

  1. 开源一款资源分享与下载工具 —— 电驴(eMule)

    这里分享一款资源分享与下载工具--电驴,其实严格来说,应该叫电骡,这是我维护的版本,eMuleVeryCD版本,VeryCD是一个不错的资源分享网站:http://www.verycd.com/.大概 ...

  2. JavaScript 相关的工具代码

    博客地址:https://ainyi.com/49 记录一些数据处理需要的方法工具代码 持续更新中... 时间戳转与日期格式相互转换 时间戳转换成日期格式 function timestampToTi ...

  3. ASP.net 资源请求漏洞利用工具PadBuster

    ASP.net 资源请求漏洞利用工具PadBuster 在ASP.net 网站中,为了便于部署网站项目,开发者往往会将资源(图片.Javascript文件)嵌入到dll文件中.而网页中,会使用WebR ...

  4. 压力工具代码及epoll使用

    服务器编程 P347的压力工具代码不错,对于epoll用的好,可以看.

  5. MD5加密工具代码

    找到一个开源的MD5加密工具代码,收藏起来 /** * MD5加密工具 */ public class MD5Utils { /** * byte[]字节数组 转换成 十六进制字符串 * @param ...

  6. Spine学习七 - spine动画资源+ Unity Mecanim动画系统

    前面已经讲过 Spine自己动画状态机的动画融合,但是万一有哥们就是想要使用Unity的动画系统,那有没有办法呢?答案是肯定的,接下来,就说说如何实现: 1. 在project面板找打你导入的Spin ...

  7. (转)unity3D 如何提取游戏资源 (反编译)+代码反编译

    原帖:http://bbs.9ria.com/thread-401140-1-1.html 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源.教我们初步的破解unity3d资 ...

  8. Android @1x,@2x,@3x 资源文件自动分包工具

    version 1.2 1.修改不用输入扩展名 2.输出路径可选.默认会在输入路径下建文件夹 前沿: 现在开发中ios,android会使用一套图,但是ui设计师给的图命名是以@1x,@2x,@3x这 ...

  9. Service系统服务(六):rsync基本用法、rsync+SSH同步、配置rsync服务端、访问rsync共享资源、使用inotifywait工具、配置Web镜像同步、配置并验证Split分离解析

    一.rsync基本用法 目标: 本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务: 1> 将目录 /boot 同步到目录 /todir 下   2> 将目录 /boot 下的 ...

随机推荐

  1. 刚刚明白了for循环写三角形

    for(int a = 15; a >=1; a--) { for(int b = a - 1; b >=0; b--) { System.out.print("A") ...

  2. MySql频繁查询、插入数据

    当我们需要频繁地从数据库查询.插入数据时,可以将这些数据库操作汇集写到同一个类里,作为工具类直接调用. 将数据库的具体信息保存在.properties文件中,用log4j作为日志记录 MySql.ja ...

  3. 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味

    在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味

  4. php反射机制学习

    PHP 5 具有完整的反射 API,可以通过反射机制来获取类,接口,函数的详细信息.例如可以通过反射api的成员属性,成员方法,命名空间的名称,检测某个类是否为抽象类等操作.(欢迎指点) 一般用途是在 ...

  5. samba配置(z)

    http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html

  6. Django开发问题及解决方法汇总

    1. manage.py@MxOnline > makemigrations users manage.py@MxOnline > migrate users 2. 操作django的ad ...

  7. 匹配数字、字母和?%&=-_这几个符号的正则表达式

    /^[\w\?%&=\-_]+$/ 说明:(1) \w 代表 0-9a-zA-Z 即数字.字母 (2) \?%&=\-_ 匹配?%&=-_,而正则中?代表0个或1个,因为是特殊 ...

  8. Maven系列(二)exec-maven-plugin

    Maven系列(二)exec-maven-plugin 1. mvn 命令行运行 # exec:java 不会自动编译代码,你需要手动执行 mvn compile 来完成编译 mvn compile ...

  9. 8个设计师必看的免费UI图标设计资源站

    图标是我们日常APP及网页设计过程中必不可少的元素之一,通过小小的图标,可以快速方便的实现视觉引导和功能划分.在创作时,我们需要寻找各种各样的图标来满足自己的设计需求,非常浪费时间和精力.今天,小编给 ...

  10. HTML5 APP应用实现图片上传及拍照上传功能

    https://blog.csdn.net/zmzwll1314/article/details/46965663 http://www.cnblogs.com/leo0705/ https://zh ...