zoukankan      html  css  js  c++  java
  • 用代码场景Spine人物

    在使用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(' '); List<string> _lsPng = new List<string>(); for (int i = 0; i < atlasLines.Length - 1; i++) { if (atlasLines[i].Length == 0) _lsPng.Add(atlasLines[i + 1]); } //创建材质; 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 = 0; 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[1] { atlasAsset }; skeletonDataAsset.skeletonJSON = jsonFile; skeletonDataAsset.fromAnimation = new string[0]; skeletonDataAsset.toAnimation = new string[0]; skeletonDataAsset.duration = new float[0]; 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; }
  • 相关阅读:
    博客园 Open Live Writer 博客编辑工具&代码高亮显示插件 安装使用说明
    测试高亮代码
    Linux 查看操作系统版本信息 uname
    Linux 查看登录用户信息 who & whoami
    Linux crontab 每5秒钟执行一次 shell 脚本 的方法
    Linux 查找特定程序 whereis
    Java 语言实现 MD5 加密
    Maven 官网 查找&下载 jar包& pom引用 完美方案
    ArcGIS Engine 10.x许可代码
    IIS 无法显示网页 目前访问网站的用户过多
  • 原文地址:https://www.cnblogs.com/mdrs/p/5098953.html
Copyright © 2011-2022 走看看