Unity分享征服Unity3dunity3D技术分享

Unity实现UI信息跟随场景移动缩放-海岛奇兵2

2017-11-02  本文已影响234人  云木unity
海岛奇兵探索.png

核心

本文主要说的是迷雾、海岛上的UI信息的实现

由于使用透视相机,ugui和ngui实现跟随场景缩放(视角变化)比较困难,场景和UI的层次关系也不好处理。

我的方案

1. 图片

图片使用有2种方案

  1. quad面片 mesh render,使用一个材质,动态设置不同的mainTexture。
    下面是要注意的事项:
    • 材质material的使用
    • 设置material的mainTexture
      注意点:图集,packing tag,散图打成图集后,load出来的Texture是大图的纹理,无法直接使用。
      可行的解决方案 :
      1. 不打图集,散图Load后直接使用,亲测可行
      2. 使用图集之后,设置Mesh Shader UV,未尝试
  -- LUA
  material.mainTexture = ResourceManager:LoadTexture(EXPLORE_AB_NAME,textureName)
  -- C#
  // 加载纹理
  public Texture2D LoadTexture(string bundleName, string texName)
  {
      return AssetBundleMananger.Instance.Load<Texture2D>(bundleName, texName, false);
  }
  1. sprite renderer (2D GameObject)

    可以使用图集,直接load出sprite
    quadIcon:GetComponent("SpriteRenderer").sprite = ResMgr:LoadSprite(textureName)

    ResMgr:LoadSprite如下:
    AssetBundleMananger.Instance.Load<Sprite>(bundleName, spriteName, false);

我使用的是方案2,优点是

  1. 可以使用图集的性能提升+sprite renderer本身的对性能的优化
  2. 与UGUI使用图片方式完全一致,使用方便。
2. 文字

使用textMesh pro,这个插件在unity store免费下载。制作字体略有一点麻烦
Unity3D插件之TextMeshPro字体资源的制作
【Unity3d】Textmesh pro教程(一):介绍及制作Font Asset

3500个常用中文字符.txt 链接:http://pan.baidu.com/s/1o7WA5aM 密码:u8b8

若把3500个常用中文字符和字母数字符号生成一个SDF字体文件,生成的文件是8.49M;
可以拆成两个字体文件常用字符.txt次常用字符.txt,生成的SDF字体小一些。
再利用Textmesh pro的字体回调功能(当前字体文件中未查询到文字信息时会继续查询回调文件中的字体信息)添加回调字体文件

TextMeshPro字体回调.png
3. 其它
  1. 图片和文字都需要加上公告板组件billboard,设置旋转角度,面向相机

    transform.rotation = Camera.main.transform.rotation * m_quaternion;

  2. 手势系统的实现: 使用easytouch插件,可以方便一些

遇到的问题:

  1. SpriteRenderer 与 MeshRenderer的渲染排序层级解决方案
    文字textMesh pro,是MeshRenderer,UI图片使用SpriteRenderer ,在3D场景中的层级显示;
文字(MeshRenderer)与图片(SpriteRenderer)的渲染层级.png

相关文章

  1. Unity实现类似【海岛奇兵】探索场景概览1
  2. Unity透视相机下场景移动缩放-海岛奇兵3
  3. Unity透视相机下地图边界处理-海岛奇兵4
  4. Unity Pinch手势缩放(Zoom)聚焦-海岛奇兵5
  5. Unity 海岛奇兵资源收取效果(6)
上一篇下一篇

猜你喜欢

热点阅读