Unity 2d触屏校准代码游戏代码问题

游戏蛮牛学习群(纯技术交流,不闲聊):
扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
查看: 42066|回复: 1044
系统学习unity2d游戏开发完整教程下载
86171/10000排名6昨日变化主题帖子积分
常驻蛮牛, 积分 6171, 距离下一级还需 3829 积分
常驻蛮牛, 积分 6171, 距离下一级还需 3829 积分
蛮牛币31273
在线时间502 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
57.jpg (63.79 KB, 下载次数: 28)
09:52 上传
& & Chapter 1. Unity Basics for
& & Chapter 2. Materials and Textures
& & Chapter 3. Quick 2D Workflow
& & Chapter 4. Customizing the Editor with Editor Classes
& & Chapter 5. Procedural Geometry and Textured Quads
& & Chapter 6. Generating Atlas Textures
& & Chapter 7. UVs and
& & Chapter 8. Cameras and Pixel Perfection
& & Chapter 9. Input for 2D Games
& & Chapter 10. Getting Started with a 2D Game
& & Chapter 11. Completing the 2D Card Game
& & Chapter 12. Optimization
& & Chapter 13. Wrapping Things Up
1章。统一基础的2D游戏2章。材质和纹理3章。快速二维工作流4章。编辑类别自定义编辑器5章。程序几何和纹理的四边形6章。阿特拉斯纹理生成7章。UVs和动画8章。相机和完美像素9章。对于2D游戏输入10章。开始使用一个2D游戏11章。完成2D游戏卡12章。优化13章。包装的东西了
游客,如果您要查看本帖隐藏内容请
unity游戏教程跟踪;untiy 2d 实例;《unity 2d 游戏开发秘籍》的资源与教程;开发2d游戏;开发2d游戏教程;unity2d 下载;unity 2d游戏开发秘籍unity3d 2d游戏开发;unity3d 2d游戏开发从0到1unity2d移动;unity2d
不是中文的。大家看清楚下载。~&
神马都是浮云 根本不是2D
既然要求回复,为什么还需要蛮牛币。。。.
没解压密码,骗钱的,坑
不是中文的坑爹
根本不是2D
没有解压密码
每日推荐:
最近百度对文件链接审查比较严格,如果遇到链接失效情况,可以加QQ补蛮牛币
4492/500排名<font color="#FF昨日变化2主题帖子积分
四处流浪, 积分 492, 距离下一级还需 8 积分
四处流浪, 积分 492, 距离下一级还需 8 积分
在线时间131 小时
感谢分享,最近把官网的2D例子看完,接着阅读代码
每日推荐:
4492/500排名<font color="#FF昨日变化2主题帖子积分
四处流浪, 积分 492, 距离下一级还需 8 积分
四处流浪, 积分 492, 距离下一级还需 8 积分
在线时间131 小时
感谢分享,最近把官网的2D例子看完,接着阅读代码
每日推荐:
71711/5000排名<font color="#FF昨日变化主题帖子积分
日久生情, 积分 1711, 距离下一级还需 3289 积分
日久生情, 积分 1711, 距离下一级还需 3289 积分
蛮牛币1815
在线时间575 小时
这个教程真不错啊,很好的教程啊
每日推荐:
5711/1000排名<font color="#FF昨日变化1主题帖子积分
熟悉之中, 积分 711, 距离下一级还需 289 积分
熟悉之中, 积分 711, 距离下一级还需 289 积分
在线时间232 小时
谢谢,不错的东西
每日推荐:
13/50排名<font color="#FF昨日变化25主题帖子积分
注册看看, 积分 3, 距离下一级还需 47 积分
注册看看, 积分 3, 距离下一级还需 47 积分
在线时间0 小时
这么快就有2d的资料了啊,非常好,感谢分享
每日推荐:
72465/5000排名<font color="#FF昨日变化1主题帖子积分
日久生情, 积分 2465, 距离下一级还需 2535 积分
日久生情, 积分 2465, 距离下一级还需 2535 积分
蛮牛币4675
在线时间818 小时
感謝版主的分享。
每日推荐:
5807/1000排名<font color="#FF昨日变化1主题帖子积分
熟悉之中, 积分 807, 距离下一级还需 193 积分
熟悉之中, 积分 807, 距离下一级还需 193 积分
蛮牛币2001
在线时间117 小时
这个好像不是用Unity2D开发2D游戏的教程吧
每日推荐:
11/50主题帖子积分
注册看看, 积分 1, 距离下一级还需 49 积分
注册看看, 积分 1, 距离下一级还需 49 积分
在线时间0 小时
想学习unity2D游戏开发
每日推荐:
73271/5000排名85昨日变化主题帖子积分
日久生情, 积分 3271, 距离下一级还需 1729 积分
日久生情, 积分 3271, 距离下一级还需 1729 积分
蛮牛币7730
在线时间755 小时
来自Mobile---
非常有用的!看不懂就查字典好了!必须支持!必须感谢!
每日推荐:
5626/1000排名<font color="#FF昨日变化4主题帖子积分
熟悉之中, 积分 626, 距离下一级还需 374 积分
熟悉之中, 积分 626, 距离下一级还需 374 积分
蛮牛币1023
在线时间92 小时
系统学习unity2d游戏开发完整教程,过来看看...
每日推荐:
3157/300排名<font color="#FF昨日变化3主题帖子积分
偶尔光临, 积分 157, 距离下一级还需 143 积分
偶尔光临, 积分 157, 距离下一级还需 143 积分
在线时间41 小时
感谢楼主的分享,给我们刚入门的人有一个学习机会
每日推荐:
7排名<font color="#FF昨日变化2主题帖子积分
在线时间214 小时
太感谢大大了……谢谢分享~~最近在学习unity……相信这个很有用
每日推荐:
5570/1000排名<font color="#FF昨日变化1主题帖子积分
熟悉之中, 积分 570, 距离下一级还需 430 积分
熟悉之中, 积分 570, 距离下一级还需 430 积分
在线时间292 小时
看看 是unity4.x的2D?
每日推荐:
61107/1500排名<font color="#FF昨日变化1主题帖子积分
蛮牛粉丝, 积分 1107, 距离下一级还需 393 积分
蛮牛粉丝, 积分 1107, 距离下一级还需 393 积分
蛮牛币2625
在线时间154 小时
新人学习。感谢分享
每日推荐:
连续签到30天
原创精华达人
原创精华帖子总数量 ≥ 100
论坛建议之星
为论坛提出建设性的建议并被多数被采纳,必须采纳5条以上
突出贡献奖
宣传论坛,介绍更多的朋友加入≥50人
累积数量达到100000蛮牛币
游戏蛮牛QQ群会员
加入游戏蛮牛官方QQ群
在“新人报到 ”版块发过自己的照片
社区QQ达人
使用QQ帐号登录论坛的用户Unity3D_2D游戏实例从零讲起(3)——基本菜单UI的实现
游戏除了基本的画面渲染,操作对象等等,还需要各种UI菜单来辅助玩家,或是引导,或是做游戏设置。比如,登录菜单,图片的显示,人物血条等等。
游戏——辐射4的UI界面
为什么要有单独的UI制作系统呢?
UI是任何一款游戏都不能或缺的部分,而且占了非常大的一个比重,他相比游戏对象(尤其是3D游戏),更多的是文字与图片,就是为了让玩家更方便的进行游戏。这些文字与图片的显示多半不像3D模型那样需要复杂的渲染过程,而且经常需要显示在视窗的最上层(也就是里摄像机最近的地方),所以引擎有必要来提供一套好的UI解决方案。
在Unity5.0版本发布之前,由于原生GUI的各种问题(虽然4.6版本新的UI系统就已经发布但是bug比较多,不完善),大家基本推崇的UI工具是NGUI,是一款很好用的UI制作插件。但是在5.0版本之后,新的UGUI系统已经在多个方面由于NGUI,所以完全可以考虑使用UGUI,当然NGUI还是值得一用的UI插件,目前的话大家自行取舍。
下面是从蛮牛社区找到的一个关于二者的对比。
(可滑轮+ctrl放大观看,或者右键在新窗口中打开图片)
然而下面我首先要说的UI制作方式却不同于以上二者,可以说是最笨的办法,也是我当时做游戏最开始的办法,为什么说这个笨的办法?因为这里我想做一个对比,而且想从基本的UI实现原理给大家一个思路。
一种笨却又简单的UI实现方式:Ray
这个例子大家可以试试,但是不建议之后也使用,要知道我们其实也可以使用原生的按钮,然而我和各位都应该知道,这个太丑了,没有游戏会用这样的按钮。
在游戏的开始菜单操作里面,我们无非是点击鼠标,然后被点击的按钮响应,然后执行某个操作。在平时我们浏览网页,使用软件的时候,你的鼠标或手指触碰的地方会触发一个消息事件。在这之前,程序的定时器不断刷新来捕获回调事件,程序需要判断你鼠标所在的位置,进而判断你是否点击到了按钮。
那么用Ray实现其实是类似的道理,你在摄像机的这个位置发射一个Ray(射线),这个射线就像激光一样向前照射,一旦它碰到任何刚体(在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体,就是一个理想的物理碰撞模型),就会反射回来。然后,你判断他是否碰撞到了你想让其碰撞的物体,并处理。
听到这里,你肯定就理解了,那UI无非就是把所有的按钮做成一张张图片放在摄像机最前面,然后在鼠标点击的位置向前发射一个Ray,判断碰撞的是不是你要的按钮,是的话就做处理。尽管这种办法,很蠢,对于复杂的UI界面也很难实现,但是原理与方式却是非常简单的,你只需要把图片做的好看一点,写几句代码就可以的。
下图是我实现的一个例子的效果:
1.首先制作好所有的图片素材
2.将图片都导入到新建的MainGUI文件夹中
3.将图片一个个拖到场景编辑窗口上,按照设计的位置摆放好.这里要注意几点:
①如果图片显示不正常就需要在文件浏览器里面点击图片——Inspector属性界面——点击Texture Type——先点击Editor GUI and Legacy GUI——然后点击下面的Apply——之后再点击sprite(2Dand UI)——再点击Apply就可以的
如果觉得看起来显示不清就可以设置图片的最大尺寸,点击该窗口的Max
SIze选择1024或更高(一般1024就足够了)
②由于Ray的方式是发射射线,所以位于前面的物体会将后面的物体挡住,所以要设置好优先级OrderInLayer,比如退出确认界面就应该优先级高。在右边实体的属性列表设置,
注意:设置z值并没有用
当然也可以通过设置坐标来改变显示的顺序,摄像机方向(一般是垂直与X0Y面),改变Z值即可。
4.由于Ray只有在碰到带碰撞盒组件的物体才会产生碰撞消息,所以这里要对图片添加碰撞盒组件。
在场景中点击图片——在Inspector栏点击Add Component——Physics 2D——Box Colider 2D。这是2D碰撞盒的一种,还有圆形的,多边形的,可以在碰撞盒所在的范围进行碰撞检测并模仿真实的碰撞效果。
(这里顺便解释一下什么是刚体RIgidBody:刚体本身是一个理想化的受力模型,受力不改变形状与大小。在游戏中,一个刚体组件就表示这个物体会受到力的作用,比如重力,阻力等,这些可以有玩家去自由调控)
5.编码,有以下几点注意:
①GameObject exitGame=null;//代表退出游戏按钮 由于要获取到Ray碰到的实体,所以这里先定义一个实体成员变量用以存储场景中的按钮实体。
②我们可以给场景中的实体命名,并用exitGame=GameObject.Find ("退出界面");的方式来获取该实体。
③这是判断是否点击按钮并做处理的代码,写在update里面
if (Input.GetMouseButtonDown(0)) {
//如果点击了鼠标左键
Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);//定义射线对象
RaycastH //实例化击中类对象
if(Physics.Raycast(ray,outhit))
name=hit.collider.gameObject.//通过hit到的物体来获取该物体的名字
Debug.Log(name);
switch(name){
//关于,退出等按钮
case"返回":
//如果击中返回这个实体,就执行下面的操作
about.transform.position=newVector3(0,11,-2);
④因为这个点击的功能是一直存在的,所以把他拖到一个常驻在场景里的实体(最好是一个主按钮,或者新建一个空的名为 clickscript的空实体。)
关于Ray方式想说的:大家看到Ray方式第一反应应该是第一人称射击游戏,没错~fps等三维游戏的瞄准与射击基本上就是这个思路,向准星的方向发射一条射线,然后沿着射线发射子弹。这里使用这种方式却是不是很恰当,但是却很直观。在最开始接触Unity的时候,特别是什么也不懂的时候,可以用这个方式做一些简单UI。
然而,一旦UI变得复杂,我们想实现更多的效果,这就显得有点力不从心了。比如,一般按钮都有点击,按下,离开多个状态,不同状态不同效果,你说怎么实现?如果实现比较酷炫的界面移动(比如PPT里的各种动画),难道你要写个算法来让其做空间位移么?如果想让UI能够按一定比例跟随角色呢?不同分辨率的设备怎么自适应呢?而且,这里使用还有诸多限制与问题,比如必须是刚体,Ray的使用效率怎么样,需要设置坐标优先级等等,所以,这确实不是一个好的方式。
下面,就介绍新5.0以后比较流行的UI制作方式——UGUI
同样也是制作这个界面,但是我们换一种方式,而且效果更好,更方便。(之后如果出现图片显示不正常的情况可以参考上面的第三部的相关注意事项①)
1.制作好素材,将图片都导入到新建的MainGUI文件夹中,点击菜单栏的File ——New Scence新建一个scence场景。
2.点击菜单栏的GameObject标签——UI——Image
建立之后我们就能看到在左边的场景实体列表(Hierarchy)新生成了三个实体
Canvas:画布,相当于一个呈现界面UI素材的容器。
Canvas下的子实体Image:每个UI控件都是由美工设计的图片构成,这个就Image是放自己设计的图片的实体
EventSystem:监听UI相关的事件实体,用来支持点击触碰等。
这时我们可以看到一个白框,这个白框就是我们游戏看到的范围。
3.先制作背景
①将实现制作好的背景素材拖到Image实体的Image(Script)的Source Image属性上,这时我们看到图片已经放到了屏幕上(新建的Canvas可能比较大,看不到全局的情况滑轮缩小视窗)
但是会发现显示不正常,这时候点击下面的按钮SetNative Size,并修改一下位移值PosXPosY都为0。
②我们希望我们的背景一直是充满屏幕的而不是随着分辨率的变化而变化,所以我们要做一些工作,这在原来的GUI系统是一个比较麻烦的事情,需要自己写脚本来满足自适应。但是UGUI系统已经很好的解决了这个问题,现在新的版本新建的Canvas都有一个属性栏叫做CanvasScaler,点击UI Scale Mode选择Scale With Screen Size。然后填上你需要机型的分辨率,一般都是,注意,如果你的图片素材尺寸较小,可以选择小一点的分辨率,只要满足16:9就可以的。
另外,部分Unity系统的版本可能不支持CanvasScaler(Unity 5.0的b9),可以在Canvas实体Inspector窗口点击Add Component——Layout——Reference Resolution,然后进行同样的操作。
③点击一下开始游戏,在Game窗口设置分辨率(上一篇Unity博客有介绍)改变窗口大小,发现图片始终充满屏幕。
④我们发现,在Image的Inspector窗口做上有一个锚点的设置,这样可以比较方便的让我们的图片中心定位在某些位置。同时调节X,Y坐标就可以放在任意位置。
4.制作按钮
①我们在Canvas的实体窗口位置右键创建UI——Button,然后我们可以在Inspector窗口看到同样的界面,我们仍然可以像刚才一样把按钮素材拖到Image的SourceImage上面——点击SetNative Size,如果觉得图片的尺寸不合适可以在上面的Scale设置图片的缩放比例。
②我们可以运行一下程序看一下效果,按钮有点击的效果,鼠标放在上面的效果。这个功能归功于下面的Transition功能,当前我们看到默认的是ColorTink,也就是按钮的点击效果都是靠颜色与Alpha透明度来调节的(差点写AlphaGo了~~)可以在游戏运行的时候修改颜色看看效果。
Transition还有两个选项,
SpriteSwap:根据制作人自己设计的素材来设置点击,释放的图片效果。
Animation:这个是利用Unity的动画系统来制作按钮的动画效果。
今天写的有点多,关于监听事件的内容之后再慢慢更新吧。
Unity 简单游戏编程(1) 开始界面设计
转自:http://blog.csdn.net/qqmcy/article/details/9330405
using UnityE
using System.Coll...
「Unity2D」使用Unity创建一个2D游戏系列-1
「Unity2D」使用Unity创建一个2D游戏系列-1
安装unity并且创建你的第一个场景
在第一章,你将会学习到一些非常基本的内容:首先是unity的下载和安装,其次...
「Unity2D」使用Unity创建一个2D游戏系列-9
菜单选项 - 载入和重启游戏
本文由泰然教程组成员 betterdenger 翻译,原文请参阅「Menus - loading and restarting the game」
我们已经完...
玲珑杯Unity开发心得——开始菜单GUI制作
/////////////////////////////
//////////////by xbw/////////////////////
/////////////环境 ...
上传大小:52.42MB &em&unity2d2d游戏&/em&开发&em&unity3d&/em& 分享 本书是国内第一本专门介绍Unity &em&2D游戏&/em&开发的图书,也是国内唯一一本讲解Unity &em&2D游戏&/em&开发的&em&教程&/em&。...
*版权证明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M
*详细原因:
交 &em&Unity3D&/em&开发&em&2D游戏教程&/em& 10积分 立即下载 ...
&em&Unity3D2d游戏&/em&开发&em&教程&/em& --- 通过实例介绍如何通过u3d开发&em&2D游戏&/em& 在开始本&em&教程&/em&之前你需要了解掌握以下工具: o Unity 2 虽然Unity 1.x的用户同样可以学习本&em&教程&/em&...
「Unity2D」使用Unity创建一个2D游戏系列-3
创建玩家和敌人
在上一章节里,我们添加了一个背景以及场景小道具。现在是时候添加一些有用的游戏元素了,比如玩家之类的。
创建一个玩家可控实体需要一些元素:sprite, 控制...
Unity3D 创建一个简单的2D游戏
http://www.cnblogs.com/sunxun/p/4889462.html
开始研究Unity3d 中的2D游戏。
首先创建出一个项目:
然后创建出一个场景...
没有更多推荐了,2D游戏基本操作实例,Unity3D,游戏源码,6m5m游戏素材
请求处理中...
这个例子囊括了2D游戏最基本的操作实现(站,走,跑,跳,打),因为我有代码洁癖,所以代码很简洁,并且拥有大量的注释,所以,对于初学者是一份很好的实例。
或 0 积分 ()
下载52浏览人数532交付方式直接下载
免责声明:【1】资源来自网络,仅限于个人学习研究,请勿用于任何商业用途,请支持或购买正版,尊重版权,请严格遵守国家相关著作版权保护的法律和规则,请下载24小时内务必删除,否则后果自负,本站不承担任何责任及连带责任!【2】本站为学习平台,所分享的资源以学习为目的,并不能保证所有源码人人都能编译,因素太多,旨在学习参考,无任何技术支持,如果您要求完美或追求细节,请勿下载,大家都不容易,互相理解,才能让更多好的学习资源出现!【3】部分素材压缩包因体积过大而上传到百度等网盘上,如果发现在本站下载的压缩包只要有几K大小,说明该压缩包里只是网盘的下载链接,并非文件损坏,本站的所有素材都是经过了审核,大家可放心下载,欢迎监督反馈。【4】做个好平台真心不容易,我们一直在努力,因本站素材量大,难免会出现某网盘下载链接失效等问题,请大家及时反馈,我们会及时修正保证您可以拿到素材,请大家支持和理解!
免责声明:本网所展示的素材与服务信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。本网不提供任何保证,并不承担任何法律责任,如有不妥之处请及时反馈,本网将会妥善处理。
友情提醒:本站旨在游戏开发的学习,所分享的素材资源均来源于网络,仅适用于学习参考,尊重版权,禁止用于任何商业用途,否则后果自负,所展示的素材版权归原作者或公司所有,如果本站素材侵犯了您的权益,请联系我们,我们将及时处理。
猜您喜欢的游戏素材
0金币 / 份
1金币 / 个
1金币 / 个
0金币 / 个
1金币 / 个
0金币 / 个
0金币 / 个
2金币 / 个
0金币 / 个
1金币 / 个在Unity游戏中使用Live2D - 简书
在Unity游戏中使用Live2D
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
本文首发于,转载请注明。
什么是Live2D
是日本Cybernoids公司开发。
Live2D现阶段有两个主要的版本是2.1的版本和3.0的版本。
国内2.1版本用的比较多(ps.此为自己的感觉,并没有数据支持,只是感觉国内讨论的比较多的就是2.1了)。
大家可以到官网去下载2.1版本,由于3.0版本的无法支持当前项目的Unity版本,所以暂时没有使用。
Unity中的Live2D
Live2D已经增加的了对Unity的支持,所以只需要将SDK下载下来后倒入就可以使用了,里面也有几个简单的例子可以直接跑。
本文讨论的是Unity中使用Live2D,对Live2D的制作不做任何讨论。
我们可以从Live2D导出的文件中看到如下标准格式:
Live2D资源包
model.1024文件夹中放的是人物的模型贴图,由于多贴图导致DrawCall升高的,所以在游戏中尽量只使用一张贴图。
motions文件夹是所有的动作文件.mtn
expressions文件夹是所有表情动作.mtn
model.moc是Live2D的模型文件
physics是物理演算文件
pose.json 可以用于动态的切换部件以实现特定需求
Live2D的Model.json文件
这里主要讲解下model.json这个文件
"version":"Sample 1.0.0",
"model":"model.moc",
"textures":[
"model.1024/texture_00.png"
"motions":{
{"file":"motions/idle_01.mtn"}
{"file":"motions/x1.mtn"}
"physics":"physics.json",
"hit_areas":[
{"name":"face","id":"D_REF.FACE"},
{"name":"body","id":"D_REF.BODY"},
{"name":"arm_l","id":"D_REF.ARM_L"}
事实上这个Json文件都可以不存在的,只要你手工调用方法加载上MOC文件和贴图文件,Live2D的基本就已经显示出来了。
但是我这边使用了model.json是因为方便资源的统一管理,方便可以看出来一个L2D模型中有多少资源包含。
在代码中虽然可以直接进行加载,但是我们更加希望有一份json作为引导文件告诉我们,现在需要加载哪些资源,然后引用哪些资源,以方便调用。
在游戏中中我们参考了SDK其中包含的Live2D的Demo,加载框架作为基础,然后修改,做出项目能用的框架。
此Model.json的key-value值参考的是Demo中的框架,大家闲得蛋疼可以搞一套属于自己的,但是也可以直接使用已经存在的。
Unity中Live2D的问题
在Unity中使用Live2D需要注意许多问题,我在使用中也踩到了很多坑,虽然现在是有给出了解决的方案,但是这些有可能都不是最终最好的解决方案,希望大家能帮我指出。
1.Live2D的RenderMode。
可能很多人一开始使用的时候都没有注意到这个参数的设置,默认是L2D_RENDER_DRAW_MESH_NOW。
这个参数有两个变量L2D_RENDER_DRAW_MESH_NOW和L2D_RENDER_DRAW_MESH。
主要区分为L2D_RENDER_DRAW_MESH_NOW是在OnRenderObject时候调用Draw()函数。
在OnRenderObject中调用Draw()会造成其Live2D一直处于最后渲染,而不会被其他物体而覆盖。
而L2D_RENDER_DRAW_MESH是在Update()中调用Draw()函数,可以进行半透明物体的渲染。
2.Live2D中图形层级的问题
在Unity中使用L2DSDK2.1时候,你会发现一个很痛苦的问题,他没办法改变图层。
本人在Ugui与Live2D结合中现在已经使用过这几个方案:
采用Unity的RT技术。
采用专门的一个摄像机进行拍摄,然后渲染到UI上。
实际使用时候需要进行矩阵的换算。
而且比较吃性能和内存,没有特别比必要就没有使用。
采用sortorder进行层级控制。
调整其他非Live2D的UI的sortorder。
Ugui中可以使用sortorder来指定渲染层级。
但是由于项目一开始并没有考虑到会有live2D,所以Layer的定义都在同一个Deaflut中。
我猜测L2d在渲染时候是全部渲染到了order为0的层上了。
所以假设情况允许可以考虑将需要分层的下层物体的order分别设置为负数,需要在上层的物体的order设置为正数可以解决图层分层的问题。
使用L2D_RENDER_DRAW_MESH_NOW直接叠加。
如果两个Live2D模型需要叠加的话推荐使用L2D_RENDER_DRAW_MESH_NOW。
那有人会说那这样谁会渲染在谁上面?
经过测试这样的情况下,谁后实例化谁会最后进行渲染。
所以如果采用此方案进行最好自己创建一个Live2D生成队列进行管理。来维护渲染顺序。
使用L2D_RENDER_DRAW_MESH进行叠加。
假设遇到了情况是两个Live2D叠加而且需要使用L2D_RENDER_DRAW_MESH作为渲染模式时候。
两个Live2D的叠加顺序符合场景中的排序。
但是要注意的是在某些情况下会出现两个Live2D的部分部件相互穿透的问题。
这个问题的出现我猜测是在Live2D制作中图层的穿透问题。
但是在某些情况下并没有复现,而且美术最近比较忙,没有来得及详细测试找出原因。
使用RenderQueue。
如果你的方案是Unity+NGUI+Live2D,可以考虑使用RenderQueue来进行排序。
在Live2D自带的Shader中为3000,你可以根据层级来设置你自己的UI的RenderQueue,同样他不支持设置Live2D的RenderQueue。
同时即使采用UGUI也可以使用RnederQueue,比如叠加粒子时候。
Live2D动作管理
在Live2D中动作的文件均是以mtn后缀的文件
在model.json中可以使用motions这个字典来管理
通过key来管理多个不同种类的动作文件。
Live2D代码解析(以Demo中SampleApp1这个项目作为例子):
1.资源加载入口函数
LAppModel.LoadFromResource(String dir,String filename);
2.Model.Init函数(修改支持DrawMode切换)
public void Init(String modelJson,int DrawMode)
updating =
initialized =
modelSetting = new ModelSettingJson(modelJson);
if (LAppDefine.DEBUG_LOG) Debug.Log("Start to load model");
// Live2D Model
if (modelSetting.GetModelFile() != null)
loadModelData(modelHomeDir + modelSetting.GetModelFile());
//setRenderMode必须要在加载Moc文件后,加载贴图前。
GetLive2DModelUnity().setRenderMode(DrawMode);
var len = modelSetting.GetTextureNum();
for (int i = 0; i & i++)
loadTexture(i, modelHomeDir + modelSetting.GetTextureFile(i));
3.Model.Json 解析引导
//事实上所有的动作等资源均是类似管理,如果需要提高性能可以单独实现数组
//通过ModelSettingJson来解析model.json
modelSetting = new ModelSettingJson(modelJson);
//通过函数跟踪可以发现其实是直接返回json而已
len = modelSetting.GetTextureNum();
4.动作播放
游戏中动作被分为:
待机动作,
特殊待机动作,
触摸事件动作,
震动事件动作。
除了待机动作,所有动作均可以相互交换。
特殊待机动作,触摸动作,震动动作,被维护成一个字典,有唯一索引,进行调用。
//此方法已经是被我修改过的方法,原始方法可以在例子中找到,原始方法是支持以索引号去播放,我修改为可以根据name播放,大家可以根据代码自行修改一下比较简单。
LAppModel.StartMotion(string group,string motionName,int priority);
Live2D表情管理
游戏中没有太多的使用表情,所以也不展开讨论。
标签文件为json格式。
使用方法与动作类似 。
表情使用时候要注意覆盖的问题。
LAppModel.SetExpression(string name);
Live2D口型管理
在Live2D的动画播放时候有时候希望能使语音与嘴型对上可以有如下几个方法:
通过控制PARAM_MOUTH_OPEN_Y。
使用系统级API获得当前的设备的播放音量
量化到0-1之间去
然后设置PARAM_MOUTH_OPEN_Y来控制最新的张口。
使用单独mtn嘴型文件
单独做出关于嘴型参数的mtn动作
创建不同的MotionQueueManager来管理嘴型和一般动画
需要同时播放才可以对上。
Live2D的Pose文件
我们可以在游戏中使用Pose.json文件来实现某些特性
其实主体的方法就是切换部件来实现某些特性。
在需要的时候会读取Pose.json文件然后加载上需要的组件
LAppModel.loadPose(String path);
然后大家会发现自从切换上Pose文件后就不管样都无法恢复到一开始的样子了。
后来通过测试发现通过重新初始化来恢复。代码如下:
//非常简单,pose变量是L2DPose类型,是LAppModel上的变量。
//live2DModel就是当前的ALive2DModel。
//这样就可以恢复到加载pose文件之前的。
pose.initParam(live2DModel);
Live2D触摸事件的管理
在游戏中Live2D触摸事件在每个场景中是不一样的,为了提高整个组件的复用。
组件中的触摸事件是一个事件链
在不同场景中的控制器可以使用委托来事件触摸事件的反应,而且在做出反应后可以通过函数的返回值来确定下一级时候继续要处理整个事件,增加了这个的灵活性。
写在尾巴上的
事实上Live2D的更多功能还并没有完全的被探索使用出来,
本文由于本人自己的能力有限只是简单探索,作为抛砖引玉作用。
国内资料暂时还比较缺少,本人斗胆分享了出来,希望各位大牛不要耻笑。
最后做个小广告~
喜欢的可以转载下我的小文章
苦逼的理工男
不甘心于现状
梦想混合现实
一只胖胖的狼
Spine是什么? Spine 是一款针对游戏开发的 2D 骨骼动画编辑工具。 Spine 旨在提供更高效和简洁 的工作流程,以创建游戏所需的动画。 优势 在 Spine 中通过将图片绑定到骨骼上,然后再控制骨骼实现动画。 2D 骨骼动画相对于传统的逐帧动画有以下优势: 最...
111. [动画系统]如何将其他类型的动画转换成关键帧动画? 动画-&点缓存-&关键帧 112. [动画]Unity引擎Mecanim动画系统功能优点? 答: l 简单化对类人角色动画设计与功能实现的工作流程。 l Mecanim动画系统使用一个可视化编程工具来管理动画之间...
This article is a record of my journey to learn Game Development and it will keep updating. 由于这篇文章的长度早已超出了简书编辑器的限制,因此后续内容将不在本文中更新,请移步本人的独...
你已经决定使用Unity开发一款VR游戏,并且以Samsung GearVR作为你的目标平台。想要在这个设备上运行起来其实很容易,但是问题是,帧率实在是太低了。你的十字准星像粘住了一样,在视野的边上还会闪烁黑边,相机的移动看起来好像摄影师被踢了一样糟糕。你已经知道维持一个稳...
你已经决定使用Unity开发一款VR游戏,并且以Samsung GearVR作为你的目标平台。想要在这个设备上运行起来其实很容易,但是问题是,帧率实在是太低了。你的十字准星像粘住了一样,在视野的边上还会闪烁黑边,相机的移动看起来好像摄影师被踢了一样糟糕。你已经知道维持一个稳...
图文/ 橘子小姐 终于,我从事了和专业一样的工作。 四月十号,我踏上南下的列车,带上去年的工资,辞掉老师的工作,一路向南,沿途横跨河南、湖北、江西几个大省,最终抵达广东。 下定这个决心异常艰难,我担心初来乍到的那种尴尬,也惧怕物是人非的不确定...
SELECT COM_CODE ,COM_NAME FROM DB2ADMIN.W_COMPANY WHERE COM_TYPE =&#39;03&#39; ANDCOM_CODE= &#39;;
13:30:34,506 ERROR - LogWriter:...
Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear run...
鹿晗、TFboys、杨沛宜等,现在一众小哥哥小姐姐们深受着小朋友们的喜爱,总能听到小朋友们一起唱着大火的《青春修炼手册》、《让我留在你身边》。那么大家知不知道,你们爸爸妈妈小的时候,听的是什么歌曲呢?今天小编为各位家长朋友们回忆童年,重返当年的时光,听听那些小时候的歌曲。 ...
近日。支付宝倡导的无现金联盟在杭州成立。无现金联盟的首批会员包括ofo、饿了么、家乐福等15家。支付宝母公司蚂蚁金服承诺未来两年将提供60亿元,助推联盟成员发展无现金支付。 当马云宣称希望用5年时间推动中国进入无现金社会时,舆论一片欢欣鼓舞,恨不得轧钢卖铁,大踏步迈入无现金...

我要回帖

更多关于 小米触屏代码 的文章

 

随机推荐