在使用Spine动画的时候可能会需要用代码创建,所以就小小的研究了一下 

/// <summary>
/// 加载一个spine的骨骼动画
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static GameObject loadSpineAnim(string path)
{
//加载json,atlas文件;
TextAsset jsonFile = AssetDatabase.LoadAssetAtPath<TextAsset>(@"Assets\" + path + ".json");
TextAsset atlasFile = AssetDatabase.LoadAssetAtPath<TextAsset>(@"Assets\" + path + ".atlas.txt"); //解析图片个数;就是材质个数;
string atlasStr = atlasFile.ToString();
string[] atlasLines = atlasStr.Split('\n');
List<string> _lsPng = new List<string>();
for (int i = ; i < atlasLines.Length - ; i++)
{
if (atlasLines[i].Length == )
_lsPng.Add(atlasLines[i + ]);
}
//创建材质;
Material[] maters = null;
if (_lsPng != null)
{
maters = new Material[_lsPng.Count];
string pngPath = path.Replace("/", @"\");
int pos = pngPath.LastIndexOf(@"\");
pos++;
pngPath = pngPath.Remove(pos, pngPath.Length - pos);
for (int i = ; i < _lsPng.Count; i++)
{
maters[i] = new Material(Shader.Find("Spine/Skeleton"));
maters[i].mainTexture = LY.ResLoad.loadImage(pngPath + _lsPng[i]).texture;
}
}
//创建一个atlas;
AtlasAsset atlasAsset = ScriptableObject.CreateInstance<AtlasAsset>();
atlasAsset.atlasFile = atlasFile;
atlasAsset.materials = maters;
atlasAsset.Reset(); //创建一个spine插件的动画文件,并初始化数据;
SkeletonDataAsset skeletonDataAsset = SkeletonDataAsset.CreateInstance<SkeletonDataAsset>();
skeletonDataAsset.atlasAssets = new AtlasAsset[] { atlasAsset };
skeletonDataAsset.skeletonJSON = jsonFile;
skeletonDataAsset.fromAnimation = new string[];
skeletonDataAsset.toAnimation = new string[];
skeletonDataAsset.duration = new float[];
skeletonDataAsset.scale = 0.01f; //创建出来动画的渲染大小;
skeletonDataAsset.Reset(); //开始创建GameObject;
GameObject obj = new GameObject(jsonFile.name);
//加上动画组件;
SkeletonAnimation skelet = obj.AddComponent<SkeletonAnimation>();
skelet.skeletonDataAsset = skeletonDataAsset;
skelet.transform.localPosition = new Vector3(100f, 0f, 0f);
skelet.transform.localScale = new Vector3(1f, 1f, 1f);
skelet.Reset(); return obj;
}

用代码场景Spine人物的更多相关文章

  1. Redux/Mobx/Akita/Vuex对比 - 选择更适合低代码场景的状态管理方案

    近期准备开发一个数据分析 SDK,定位是作为数据中台向外输出数据分析能力的载体,前端的功能表现类似低代码平台的各种拖拉拽.作为中台能力的载体,SDK 未来很大概率会需要支持多种视图层框架,比如Vue2 ...

  2. git 提交代码场景

    1.首次提交代码到master git init git add . git commit -m '' git remote add origin +address git push -u origi ...

  3. java类成员变量与代码块初始化

    首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...

  4. netty-socketio 示例代码

    socket.io是一个不错的websocket项目,github上有它的java实现:netty-socketio 及 示例项目 netty-socketio-demo,基本上看看demo示例项目就 ...

  5. 如何保障Go语言基础代码质量?

    为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...

  6. 【AS3 Coder】任务六:人物换装(纸娃娃)系统的制作

    使用框架:AS3(Flash Professional CS5.0及更高版本 + Flash Buider)任务描述:了解人物换装系统的制作原理难度系数:2 本章源码下载:http://www.iam ...

  7. IOS IAP APP内支付 Java服务端代码

    IOS IAP APP内支付 Java服务端代码   场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purcha ...

  8. IDEA:Git stash 暂存分支修改的代码

    IDEA:Git stash 暂存分支修改的代码 场景:当我们正在master分支开发新功能的时候,突然接到一个任务发现线上出现了一个紧急的BUG需要修复,由于没有打新分支做这部分新需求,这时正做到半 ...

  9. 龙之谷手游WebVR技术分享

    主要面向Web前端工程师,需要一定Javascript及three.js基础:本文主要分享内容为基于three.js开发WebVR思路及碰到的问题:有兴趣的同学,欢迎跟帖讨论. 目录:一.项目体验1. ...

随机推荐

  1. Oracle EBS-SQL (MRP-3):检查例外信息查询_建议取消_采购订单.sql

    select msi.segment1                                    编码 ,msi.description                           ...

  2. __stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简介

    1. 今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter); 不解为什么要用WINAPI宏定义,查 ...

  3. web前端开发工程师

    web前端开发工程师 百科名片 Web前端开发工程师是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过5年.Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征.在互联网的演化进 ...

  4. codeforces gym 100463I Yawner

    //这题挂得让我怀疑我最近是不是做了什么坏事 题意:一个人有两个集合,先在其中一个集合选一个数x,然后向右走x布,然后再在另一个集合里选一个数y,向左走y步,问是否能走完数轴上所有点. 解:显然是求g ...

  5. K-th Number(第k大数)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 45710   Accepted: 15199 Ca ...

  6. Dictionary到List转换中的性能问题 转

    本文来自:http://www.cnblogs.com/353373440qq/p/3488367.html 在应用泛型中,我们经常使用Dictionary,经常会用到Dictionary到List的 ...

  7. Windowsclient开发简单介绍(四)

            在上一篇文章里,我简单扼要的给大家介绍了一下GDI的基础知识,包含DC,HDC.GDI对象等等,总的来说都是些偏理论的知识,属于概念的范畴. 今天这篇文章里,我就要正式開始有点实际的东 ...

  8. Android 查看通讯录Contacts是否发生变化

    目的:确定通讯录是否发生变化 根据:參见ContactsContract.RawContacts类中的VERSION常量,该值是仅仅读的,当通讯录发生变化时,都会使该值变化 方法:version值是相 ...

  9. C#核编之X++详解

    重点:当X++单独使用时,就是没有其他符号参与运算,这时X做自增运算,而当X++与其他运算符一起参与运算时,这时的X++因为运算优先级低,所以是最后一个参与运算的,所以看下面代码 ; x=x++;// ...

  10. UVA 246 10-20-30

    题意: 给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,如果有牌堆形成了以下3种情况(按顺序判断):1.头两张+尾一张和为10或20或30.2.头一张+尾两张和为10或20或30. ...