索引

  • unity3d:
    • Pixels Per Unit
    • 怎么给图片添加点击事件
    • 获取点击到的物体
    • 加载Profab
    • Sprite和Image区别
    • 报错

unity3d:

Pixels Per Unit

有个很奇怪的事情,当把图片拖到舞台之后会发现图片很小很小,查阅说明发现是这个值的原因。
  理解就是unity里有个自己的尺寸标准unit,引入图片的时候需要约定好多少像素对应1unit,比如图片A是1024像素和图片B是1像素,都是这对应1unit,那么拖到舞台这两个图是一样大的。

Unity3D 游戏画面像素与单位关系。

多次实践后理解下,用Image然后贴图的形式就是原大,直接拖进来就会小100倍(1unit),但是从运行后的结果看,两个是一样大的

怎么给图片添加点击事件

image:
如果你的图片是用UGUI做的,那么默认应该在hierarchy界面有个EventSystem,它是用来识别UI事件的,在你的图片对象中添加EventTrigger组件,然后设置事件类型,比如点击就是PointerClick,最后给事件添加执行的对象和相关方法。
添加一个2dxxx的碰撞器

sprite:
添加一个2dxxx的碰撞器
添加一个OnMouseDown的回调函数

获取点击到的物体

物体必须带有BooxColider属性,才能通过物理检测到

        // 使用主摄像机创建一根射线,射线的方向是鼠标点击的位置(从摄像头位置到鼠标点击位置的一条射线)Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//保存触碰到的对象RaycastHit hit;//使用物理类检查射线的碰撞,保存在hit, 射线碰撞到"Graound"层bool isCollider = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("Default"));//如果点击物体存在if (isCollider){GameObject m_baseBuilding = hit.collider.gameObject;Debug.Log(m_baseBuilding.name);}

加载Profab

加载到内存,然后实例化

        BuildBtnPanel m_buildBtnPanel = Resources.Load<BuildBtnPanel>("Prefabs/Home/BuildBtnPanel");if (m_buildBtnPanel){BuildBtnPanel m_fab = Instantiate(m_buildBtnPanel, Vector3.zero, Quaternion.identity) as BuildBtnPanel;//m_fab.transform.localPosition = new Vector3(112, 393, 0);}

Sprite和Image区别

一篇详细文章
渲染上:
Image 通过UGUI的Image和CanvasRenderer组件组件来渲染
Sprite 通过SpriteRenderer组件来渲染
两者在视觉上没有任何区别(都使用默认材质时)。它们默认的渲染也都是在Transparent Geometry队列中。

使用上:
Image需要位于某个Canvas下才能显示出来。场景中的Sprite可以像普通的3D游戏物体一样对待,通过Transform组件进行移动等操作,而Image则使用RectTransform进行布局,以便通过Canvas统一管理。由于RectTransform可以设置大小、对齐方式等,Image可以说更加方便一点,这也是很多人选择使用Image的原因。
在引擎的处理上:
将Wireframe选项打开然后在场景中观察,就可以清楚地发现,Image为一个矩形的Sprite生成两个三角形拼成的矩形几何体,而Sprite则会根据显示内容,裁剪掉元素中的大部分透明区域,最终生成的几何体可能会有比较复杂的顶点结构。

由渲染管线的基本流程进行推断:
1.Sprite由于顶点数据更加复杂,在进行顶点计算时会比Image效率更低;
2.Sprite会比Image执行较多的顶点着色器运算;
3.Image会比Sprite执行更多的片段着色器运算
由于片段着色器是针对每个像素运算,Sprite通过增加顶点而裁剪掉的部分减少了相当多的运算次数,在绝大多数情况下,反而比Image拥有更好的效率(尤其是场景中有大量的2D精灵时)。SpriteRenderer会创建额外的几何体来裁剪掉多余的透明像素区域,从而减少了大量的片段着色器运算,并降低了overdraw;而Image则会创建简单的矩形几何体。随着2D元素数量的增加,这种差别会慢慢明显起来。
因此在2D游戏开发中,游戏场景中的元素,应该尽量使用它去渲染。而Image应该仅用于UI显示(实际上即使不考虑性能原因,由于屏幕分辨率的变化,Image可能会被Canvas改变显示位置和实际大小,如果用于游戏内元素的显示,可能会造成跟预期设计不一致的显示结果,也应该避免使用)。

报错

There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.

是因为后来创建了一个camera,因为camera中自带一个组件Audio Listener。所以有两个camera就有两个audio listener导致报错。

一个简单的解决方法就是删掉其中一个camera中的audio listener组件。

从0开始学Unity做SLG系列(杂记)相关推荐

  1. 从0开始学Unity做SLG系列(GameFramework框架)

    目录 GameFramework框架启动流程 GameFramework框架启动流程   找了2个系列教程,照着写完后,应该就有些基础了解了. 先看第一篇 StarForce 在看第二篇 Flappy ...

  2. 从0开始学Unity做SLG系列(1)

    目录 GameFramework框架 加载登陆界面 编写框架流程 因为这部分已经做完了,回头整理文档顺便复盘,所以可能不是很详细,先给了整体代码,后面再慢慢分析 GameFramework框架 写这个 ...

  3. 从0开始学Unity做SLG系列(发布篇)

    IOS发布流程 1.首先在这里打开设置面板 2.上面添加好所有用到的scene,切换到要发布的版本再发布会快很多,当前的模式后有个小图标,如果要切的别的模式,3会有个switch. 3.填写发布内容, ...

  4. 1.4 从0开始学Unity游戏开发--Unity编辑器初见

    安装 没啥好说的,要先安装一个Unity Hub,然后在Unity Hub里面安装编辑器,但是有两点要注意,Unity的收费模式跟随你使用的场景而不同,这里我都默认使用个人开发者版本,这个是免费的,如 ...

  5. 0基础学python做什么工作好-写给0基础小白:Python能干什么?就业前景好不好?怎么开始学?...

    原标题:写给0基础小白:Python能干什么?就业前景好不好?怎么开始学? 今天,我们深度了解一下Python这门语言,它到底是什么,都能用来干什么,为什么这么火? 首先,普及一下编程语言的基础知识. ...

  6. 0基础学python做什么工作好-零基础自学Python多久可以找工作?

    零基础自学Python多久可以找工作?零基础自学3个月很难找到工作.如果全职学习Python的话,学习6个的时间,不一定能达到找到工作的水平,掌握项目经验还需要更久,达到企业需要的岗位要求还需要多练习 ...

  7. 0基础学python做什么工作好-零基础自学多久Python可以找什么工作

    虽说很多都想自己学Python,然后找相关的工作,那么自学Python可以找什么工作呢?另外,学多久Python可以找工作.对Python,要掌握哪些知识才能找到好工作呢?今天跟智连代理一起去了解一下 ...

  8. 0基础学python做什么工作好-零基础自学python到什么程度才有机会去小公司实习?...

    谢邀.小公司的要求不是很高.但是基本的做项目,解决问题的思路还是要有的.对算法,底层框架源码可能没有过多地要求 必须要掌握的技能有: 一.基础语法 1 变量 2 逻辑判断 3 循环 4 函数 /> ...

  9. 0基础学python做什么工作好-零基础学Python,越早明白这些,越快找到好工作!...

    如何学习python,就能仅靠python得到好工作? 读者A:自学python一年,用于写网络爬虫,但一直觉得自己对python理解还很低层.现在大三,打算再用一年时间学习python,让自己对这们 ...

最新文章

  1. 属于哪种虚拟化类型_经络淤堵,疲乏无力?有3种疲劳类型,你属于哪种,快来自测一下...
  2. 项目管理基础培训分享
  3. Boost:在向量中打印值
  4. 维特比算法—打字输入预测
  5. linux显卡内核修改,iTOP-4412开发板-驱动-linux显卡驱动的修改方法
  6. makefile编译erlang
  7. c3p0 服务启动获取连接超时_微服务架构中的熔断、降级
  8. 十四、汇编指令(存储、加法、减法、乘法、除法、跳转、子程序、if判断、中断)
  9. LeetCode 155. Min Stack
  10. ktv登陆功能的实现 1216
  11. leetcode题解8-盛最多水的容器
  12. 《Oracle高性能自动化运维》一一2.3 Library Cache
  13. 全球私有云的中国挑战者来了
  14. linux设备模型之mmc子系统
  15. excel公式编辑器_【软件】公式编辑神器:墨迹公式
  16. PAT Basic 1055
  17. C语言程序设计第四次作业——选择结构(2)
  18. Centos7 Python3.6+Qt5.12.9+ PyQt5.12+Sip v5+QScintilla-2.10+Eric6
  19. BDC的执行模式与更新模式
  20. 英特尔第十代处理器为什么不支持win7_10代cpu能不能装win7?10代cpu装win7全面分析(支持十代cpu)...

热门文章

  1. 古董电脑室:2019日记簿(五)
  2. 3步就能制作漫画头像的机器人,想拥有一个吗?
  3. AJAX调试技术 IE篇
  4. EL表达式获取request域的值
  5. 输入年输出属相编程c语言,妙趣横生C语言.ppt
  6. 刚体验完华为P20 Pro,这位巴黎的珠宝设计师立刻献上了膝盖
  7. 从Chrome源码看浏览器如何构建DOM树
  8. 80秒的语音芯片有哪些?看这里~
  9. 【Verilog基础】在不同时钟域之间如何安全地传递信号方法总结(2)单比特跨时钟域之结绳法(快到慢)
  10. Android直播系统的实现,直播APP开发Android端推流及播放