Frost的博客


  • 首页

  • 归档

  • something

在Unity中使用LitJson解析json文件

发表于 2018-09-14

LitJson
这个库需要找资源,找到LitJson.dll后将它放在Assets文件夹下,在脚本中使用using引入即可

测试代码
json文件:

{“Archice”:[{“EXP”:700,”HP”:800,”Level”:4,”MapID”:2,”MissionCount”:0,”MissionID”:5,”ScriptSign”:”0000001111”}]}

这个Json文件是一个存档文件,键”Archice”对应的值是一个数组,这个数组储存每一个存档数据,每个存档数据有EXP,HP,Level,MapID, MissionCount, ScriptSign这几个键,在Unity中要储存这个Json文件里的数据的话,要使用

1
Dictionary<string, List<Dictionary<string, object>>>

这个类型来储存,显然,键值关系使用Dictionary, 数组关系使用List存储
测试:

1
2
3
4
5
6
7
8
9
//读取数据
public void ReadData()
{
string FileName = "Assets/Data/Archice.json";
StreamReader json = File.OpenText(FileName);
string input = json.ReadToEnd();
Dictionary<string, List<Dictionary<string, object>>> jsonObject = JsonMapper.ToObject<Dictionary<string, List<Dictionary<string, object>>>>(input);
Debug.Log(jsonObject["Archice"][0]["EXP"]);
}

这段代码将第一个存档中的经验值读取出来
随便在某个地方执行ReadData函数
结果:

解析成功

如何在unity中使用龙骨动画

发表于 2018-07-25

龙骨
龙骨是Egret公司的一个用来做动画的软件,本文分享一下如何在Unity2D中使用龙骨导出的2D动画

导出动画

在龙骨中文件->导出,导出动画数据和纹理到Unity的项目中,如果打包了的话就在Unity的项目的目录下解压,解压后我们可以看到3个文件
Animation_ske.json(骨骼配置)
Animation_tke.json (图集配置)
Animation_tex.png (图集图片)
简单来讲,动画的数据在骨骼配置文件里,图集配置文件记录了图片的位置和路径
向Unity添加龙骨插件
要在Unity使用龙骨,必须要将龙骨的插件添加到项目里,这个插件是一个标准的UnityPackge,可以在龙骨官方博客下载,下载完成后,在Unity Editor中,Assets->import package->custom package,选择刚刚下载好的DragonBonesForUnity.unitypackage文件,导入

在Unity中使用龙骨动画
终于回到正题了,首先在场景中创建一个DragonBones Armature Object, 导入龙骨的插件后可以在Hierarchy视图中右键看到DragonkBones这个选项,点击Armature Object

创建成功,选中这个Armature对象,查看Inspector视图

可以看到,这个对象自带一个UnityArmatureComponent组件,这个组件下有一个叫做龙骨数据(DragonBonesData)的属性,我们刚刚导出到项目里的龙骨动画明明是三个文件,这要怎么办呢?
在Unity的文件管理器中找到我们导出的龙骨动画的三个文件,将三个文件选中,右键Create->DragonBones->Create Unity Date

然后就可以看到三个文件的目录下多了一个Unity Data文件,将这个文件拖动到刚刚的UnityArmatureComponent组件中,并点击Create加载动画,可以在Scene中看到你的动画角色了


至于UnityArmatureComponent中加载了龙骨数据后出现的属性都比较简单,就不一一讲解了,接下来讲一下播放动画的API
用脚本播放动画
创建一个脚本PlayerCtrl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCtl : MonoBehaviour
{
private DragonBones.UnityArmatureComponent unityArmature;//UnityArmatureComponent对象
void Start ()
{
unityArmature = GetComponent<DragonBones.UnityArmatureComponent>();//获得UnityArmatureComponent对象
unityArmature.Play("Idel");//播放动画
}
void Update()
{
}
}

将这个脚本绑定到角色上,角色就开始播放动画了,至于换装系统暂时还没接触到,这次先不讲吧

Windows下cocos2d-x环境搭建

发表于 2018-05-22

Python环境搭建:
安装python-2.7.x,可以上python官网下载,记得安装的路径
配置环境变量:右键我的电脑(或者控制面板>系统和安全>系统),打开高级系统设置>环境变量,在系统变量找到Path变量,双击,新建,选择刚刚Python安装的路径,如D:\python。
检测python是否安装成功:打开命令提示符(不知道怎么打开的百度),输入python,如果出现

python安装成功

VS安装向导:
打开VS2017安装程序,新安装的话,根据向导,勾选
使用c++的桌面开发
使用c++的游戏开发
安装
cocos2d-x的测试以及新建工程:
上github或者cocos2d官网下载cocos2d-x,解压,进入build文件夹,使用vs打开cocos2d-win32.sln,右键项目test_cpp,设置为启动项,点击本地Windows调试器(绿箭头),如果出现helloworld窗口,证明所有环境搭建完毕。
新建工程教程:
在cocos2d-x-3.14\tools\cocos2d-console\bin 按shift+右键打开命令提示符,输入cocos new projectname -p com.coco2dx.org -l cpp -d D:\Game\

projectname是项目名称,com.coco2dx.org是包名,cpp是用c++编程,最后一个参数是目标路径,输入完成之后等待拷贝完毕即可在目标路径下找到新建的工程

unity学习笔记4

发表于 2018-05-22

Unity3D中的碰撞:
在unity中,有普通碰撞体Collider和触发器(Trigger)两种碰撞体,两个普通碰撞体会发生碰撞并产生力学现象,触发器则像是个无法触碰而又真实存在的东西,也会触发碰撞事件,但另一个物体会穿过它,碰撞发生的前提是两碰撞体有一方携带刚体(Rigidbody)组件。
物体对碰撞体进行处理的三个函数:
void OnCollisionEnter(Collision collision);//当碰撞体进入当前物体时触发的回调函数
void OnCollisionStay(Collision collision);//当碰撞体停留当前物体内时触发的回调函数
void OnCollisionExit(Collision collision);//当碰撞体离开当前物体时触发的回调函数
物体对触发器进行处理的三个函数:
void OnTriggerEnter(Collider other);//当触发器进入当前物体时触发的回调函数
void OnTriggerStay(Collider other);//当触发器停留在当前物体时触发的回调函数
void OnTriggerExit(Collider other);//当触发器离开当前物体时触发的回调函数

Unity2D中的碰撞:
概念和Unity3D大致相同
物体对2D碰撞体进行处理的三个函数:
void OnCollisionEnter2D(Collision2D collision);//当2D碰撞体进入当前物体时触发的回调函数
void OnCollisionStay2D(Collision2D collision);//当2D碰撞体停留当前物体内时触发的回调函数
void OnCollisionExit2D(Collision2D collision);//当2D碰撞体离开当前物体时触发的回调函数
物体对2D触发器进行处理的三个函数:
void OnTriggerEnter2D(Collider2D other);//当2D触发器进入当前物体时触发的回调函数
void OnTriggerStay2D(Collider2D other);//当2D触发器停留在当前物体时触发的回调函数
void OnTriggerExit2D(Collider2D other);//当2D触发器离开当前物体时触发的回调函数

unity学习笔记3 一些常用API和应用场景

发表于 2018-05-22

Mathf.Lerp(float a,float b,float t)插值函数,当a < b时往a中插入t,以此来实现颜色,声音等渐变效果。

GameObject.FindWithTag(string tag)通过标签得到实例化的对象,实现跨脚本操作对象

控制物体旋转相关:
Quaternion: 四元数
void Rotating(float h, float v)
{
Vector3 targetDir = new Vector3(h, 0, v);
Quaternion targetRotation = Quaternion.LookRotation(targetDir, Vector3.up);
Rigidbody r = GetComponent();
Quaternion newRotation = Quaternion.Lerp(r.rotation, targetRotation, turnSmoothing * Time.deltaTime);
r.MoveRotation(newRotation);
}
h为水平输入,v为垂直输入,该代码实现角色根据水平方向的输入旋转的功能

unity学习笔记2

发表于 2018-05-22


Unity使物体消失的三种方法

  1. GameObject.Destroy(gameobjcet);
    //破坏物体
  2. gameObject.SetActive(false);
    //Unity2017新API,使用该方法设置物体是否存在于Hierarchy,active的新名称为activeSelf,无法直接修改,可以使用gameObject.activeInHierarchy()方法获取它的值。
  3. enabled = false;
    //直接在脚本中使用该语句可隐藏该脚本所绑定的GameObject,原gameObject.renderer.enabled 变量已被移除。

unity学习笔记1

发表于 2018-05-22

transform:
transform是GameObject的一个默认的组件,其包含着该对象的几种属性,坐标(Position)以及旋转角度(Rotation)和尺寸(Scale)。
transform的子对象:
transform.position 类型为Vector3,其值为该对象的世界坐标值
transform.localposition 类型为Vector3, 其值为以父对象的坐标为原点的坐标值
transform.rotation 类型为Vector3, 其值为该对象相对于初始状态的旋转角度
transform.
常用API
GameObject.transform.Rotate(Vector3 vector); 此函数使GameObject对象旋转,参数中的向量对应该对象饶x,y,z轴的旋转角度

hexo的常用命令

发表于 2018-05-22

新建博客hexo new post “博文名”
生成静态页面 hexo d -g
上传到github hexo d

Hello World

发表于 2018-05-20

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

Frost

9 日志
5 标签
© 2018 Frost
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4