从0开始学Unity做SLG系列(杂记)
索引
- 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系列(杂记)相关推荐
- 从0开始学Unity做SLG系列(GameFramework框架)
目录 GameFramework框架启动流程 GameFramework框架启动流程 找了2个系列教程,照着写完后,应该就有些基础了解了. 先看第一篇 StarForce 在看第二篇 Flappy ...
- 从0开始学Unity做SLG系列(1)
目录 GameFramework框架 加载登陆界面 编写框架流程 因为这部分已经做完了,回头整理文档顺便复盘,所以可能不是很详细,先给了整体代码,后面再慢慢分析 GameFramework框架 写这个 ...
- 从0开始学Unity做SLG系列(发布篇)
IOS发布流程 1.首先在这里打开设置面板 2.上面添加好所有用到的scene,切换到要发布的版本再发布会快很多,当前的模式后有个小图标,如果要切的别的模式,3会有个switch. 3.填写发布内容, ...
- 1.4 从0开始学Unity游戏开发--Unity编辑器初见
安装 没啥好说的,要先安装一个Unity Hub,然后在Unity Hub里面安装编辑器,但是有两点要注意,Unity的收费模式跟随你使用的场景而不同,这里我都默认使用个人开发者版本,这个是免费的,如 ...
- 0基础学python做什么工作好-写给0基础小白:Python能干什么?就业前景好不好?怎么开始学?...
原标题:写给0基础小白:Python能干什么?就业前景好不好?怎么开始学? 今天,我们深度了解一下Python这门语言,它到底是什么,都能用来干什么,为什么这么火? 首先,普及一下编程语言的基础知识. ...
- 0基础学python做什么工作好-零基础自学Python多久可以找工作?
零基础自学Python多久可以找工作?零基础自学3个月很难找到工作.如果全职学习Python的话,学习6个的时间,不一定能达到找到工作的水平,掌握项目经验还需要更久,达到企业需要的岗位要求还需要多练习 ...
- 0基础学python做什么工作好-零基础自学多久Python可以找什么工作
虽说很多都想自己学Python,然后找相关的工作,那么自学Python可以找什么工作呢?另外,学多久Python可以找工作.对Python,要掌握哪些知识才能找到好工作呢?今天跟智连代理一起去了解一下 ...
- 0基础学python做什么工作好-零基础自学python到什么程度才有机会去小公司实习?...
谢邀.小公司的要求不是很高.但是基本的做项目,解决问题的思路还是要有的.对算法,底层框架源码可能没有过多地要求 必须要掌握的技能有: 一.基础语法 1 变量 2 逻辑判断 3 循环 4 函数 /> ...
- 0基础学python做什么工作好-零基础学Python,越早明白这些,越快找到好工作!...
如何学习python,就能仅靠python得到好工作? 读者A:自学python一年,用于写网络爬虫,但一直觉得自己对python理解还很低层.现在大三,打算再用一年时间学习python,让自己对这们 ...
最新文章
- 属于哪种虚拟化类型_经络淤堵,疲乏无力?有3种疲劳类型,你属于哪种,快来自测一下...
- 项目管理基础培训分享
- Boost:在向量中打印值
- 维特比算法—打字输入预测
- linux显卡内核修改,iTOP-4412开发板-驱动-linux显卡驱动的修改方法
- makefile编译erlang
- c3p0 服务启动获取连接超时_微服务架构中的熔断、降级
- 十四、汇编指令(存储、加法、减法、乘法、除法、跳转、子程序、if判断、中断)
- LeetCode 155. Min Stack
- ktv登陆功能的实现 1216
- leetcode题解8-盛最多水的容器
- 《Oracle高性能自动化运维》一一2.3 Library Cache
- 全球私有云的中国挑战者来了
- linux设备模型之mmc子系统
- excel公式编辑器_【软件】公式编辑神器:墨迹公式
- PAT Basic 1055
- C语言程序设计第四次作业——选择结构(2)
- Centos7 Python3.6+Qt5.12.9+ PyQt5.12+Sip v5+QScintilla-2.10+Eric6
- BDC的执行模式与更新模式
- 英特尔第十代处理器为什么不支持win7_10代cpu能不能装win7?10代cpu装win7全面分析(支持十代cpu)...