Unity UI

Unity教程之-基于NGUI设计和开发一套自动化UI框架

目标:编写一个简单通用UI框架用于管理页面和完成导航跳转

最终的实现效果和项目工程链接请拉到最下方查看

框架具体实现的功能和需求

  • 加载,显示,隐藏,关闭页面,根据标示获得相应界面实例
  • 提供界面显示隐藏动画接口
  • 单独界面层级,Collider,背景管理
  • 根据存储的导航信息完成界面导航
  • 界面通用对话框管理(多类型Message Box)
  • 便于进行需求和功能扩展(比如,在跳出页面之前添加逻辑处理等)

    看下效果图

     

More

UGUI教程之-基于MVC模式的背包系统UGUI实现

 

关于利用UGUI实现背包系统我们再前面的文章提到过《UGUI滚动视图ScrollView的使用教程之简易背包》,那么本篇文章我们来看下基于MVC模式的背包系统UGUI再实现  ,Inventory system implemented based on MVC mode。包含点击交换和交换两种操作模式。 -点击模式: Item预制体Button组件有效,Item子对象Icon的脚本无效。 -拖拽模式: Item预制体Button组件无效,Item子对象Icon的脚本有效。

先看下效果图先

基于MVC模式的背包系统UGUI实现  More

Unity教程之-UGUI使用TexturePacker打包让图集

 

关于UGUI的图集打包我们在前面提到过《Unity教程之-Unity4.6UI图片打包设置(小图打包成图集 SpritePacker)》除了设置SpritePacker和packing tag外,我们还可以使用TP图集打包工具,以前NGUI都是用TP打包的,所以查了各种论坛总算找到了点头绪,今天给大家分享下,再UGUI下怎么使用TexturePacker来打包图集,首先要使用主角 TexturePacker 我用的是3.4 


More

UGUI教程之-Mask裁切UI粒子特效

 

其实如果粒子特效 和3D模型 都用RenderTexture来做的话就不会有裁切的问题,但是粒子特效用RenderTexture来做会有显示的问题,所以还是得用摄像机。废话不多说了,进入正题。我们来看下用Mask裁切UI粒子特效,原理就是把Mask的裁切区域传给粒子特效Shader,当超出这个区域那么直接让它完全透明即可。粒子特效的源生shader大家可以去unity官网下载,我在这里把需要修改的地方标注给大家。下面是效果图

More

Unity教程之-UGUI忽略UI被拦截事件

 

在unity3d游戏开发中,如果一个按钮有一半的区域被Image挡住,那么被挡住的按钮区域的点击事件就会被拦截掉。解决这个问题有两个方法。那么我们看下在UGUI中处理UI被拦截事件的解决方法,

1.修改Hierarchy视图中的树状结构。比如两个Image,把Image2放到Image1的下面,这样渲染上Image2在Image1前面,这样点击被挡住区域就会被响应了, Text的原理一样。 More

Unity教程之-UGUI多语言实现

 

想必一款流行的游戏,都会包含好几种语言,那么怎么在unity3d中用UGUI实现多语言呢,下面我们来看下,从Foundation插件中抽离出的多语言。原理很简单,给Text绑定key,在程序开始时设置本地语言即可。

目录结构:

UGUI多语言

LanguageEditor.cs:自定义编辑器;

LanguageService.cs:负责读取语言文件供程序使用;

LanguageText.cs:绑定到Text组件中;

Resources文件夹:存放资源文件及配置文件;

Localization文件夹:语言包,所有的语言放在该目录下,每种语言一个文件夹;根据语言设置读取相应目录下的语言文件; More

Unity教程之-unity3d游戏UI开发的重用性

 

在unity3d游戏开发中,UI有几十个到上百个不等,如果一个一个做这些UI,无疑会花费很多时间。近期我们的游戏UI已经是第N次改版了,我改了这N多次的UI,总结了UI其实有很多的共性(就是相同性)。

下面说一些我觉得常用的UI的抽取思路

1.共用的按钮

image More

Unity教程之-UGUI制作无限循环List列表

 

UI的开发其实技术的成分相对来说不算多,但是一个好的UI是绝对少不了底层组件的支持的。我个人认为UI组件中相对比较复杂的就是List了,所以,这两天实现了一个UGUI的list,写了好几个版本,最终这个版本是相对比较好用的,在这我介绍一下大概思路,一是巩固一下知识做个记录,二是发扬一下分享精神。嘿嘿,大家多多赐教。

写List有两个重点是需要考虑的:

1.list中的item总数问题,刚打开的时候如果同时生成多个item会有卡顿的现象,50个,100个可能没问题但是1000个2000个就比较难搞了。

2.当list滑动时如何加载后面的item,一般的逻辑应该是这样的:每当滑动到红线的位置就生成后面一列的item,但是做过UI开发的人知道,这种方法做做demo可以,但是现实项目中基本没这么用的。如下图

More

Unity教程之-UGUI鼠标穿透UI问题的解决方法

 

在unity3d游戏开发中我们的UI是始终出现在屏幕的,如果在一个战斗场景中用户点了UI战斗场景中的物体也会作出响应肯定是有问题的!其实关于这个问题网上有不少解决方法了,但是总感觉没有一个是适合我的需求,或者说没有一个最好的答案。其中提到最多的是利用EventSystem.current.IsPointerOverGameObject()来判断,这个方法的意义是判断鼠标是否点到了GameObject上面,这个GameObject包括UI也包括3D世界中的任何物体,所以他只能判断用户是都点到了东西。对于本文中的问题意义不是很大。那么这个问题到底该怎么解决呢?

最近在用UGUI的时候遇到了鼠标穿透的问题,就是说在UGUI和3D场景混合的情况下,点击UI区域同时也会 触发3D中物体的鼠标事件。比如下图中

More

UGUI Outline实现原理分析

 

使用 UGUI 制作背包的时候,同事发现如果背包中添加了大量的物品,比如两百个,Unity就会出错,提示 Canvas element contains more than 65535 vertices. This is not supported 。意思就是 Canvas下面的顶点数过多。

如下图:

UGUI Outline

More