在使用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. JIT和程序的首次执行

    由于C#源代码经过编译器编译生成的是IL代码,而IL是与CPU无关的机器语言.因此当程序运行于特定的CPU时,首先必须将IL转换成本地CPU指令,这正是JIT(Just-In-Time)编译器的任务. ...

  2. system.exit(0) vs system.exit(1)

    2.解析 查看java.lang.System的源代码,我们可以找到System.exit(status)这个方法的说明,代码如下: /** * Terminates the currently ru ...

  3. Delphi在Webbrowser上绘制图像

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  4. 杭电oj 1009 FatMouse' Trade

    Tips:本题采用贪心算法,类似于背包问题,关键在于读入数据之后,将数据按 J[i]/F[i] 从大到小排列即可. /**本程序主要采用贪心算法思想,类似于背包问题*/ #include<std ...

  5. CURL 宏定义列表

    摘自http://blog.csdn.net/msda/article/details/38047809/ CURL 宏定义列表 列表CURL库一共有17个函数 curl_close:关闭CURL会话 ...

  6. 学习本课程需要具备哪些基础及微信小程序目录结构介绍

    1.html css js 基础 2.ajax 基础 3.简单的面向对象基础  

  7. Tree(prime)

    Tree Time Limit : 6000/2000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  8. MIN (Transact-SQL)【转】

    MIN (Transact-SQL)   其他版本 SQL Server 2005   此主题尚未评级 - 评价此主题   返回表达式中的最小值. 后面可能跟随 OVER 子句. Transact-S ...

  9. Android EditText限制输入一些固定字符的属性

    android:digits="abcdefghijklmnopqrstuvwxyz1234567890" 仅仅能输入这些

  10. MySQL Server 5.0 下载与 安装指南[图文] (安装到非系统路径+设置root账号相应password)

    软件下载:点我前往下载 安装需知:相应mysql版本号为V5.0 ------------------------------------------------- 安装步骤例如以下: Step1 首 ...