20170810 Unity项目笔记

今天有个需求。里面涉及到NGUI下的坐标转换。这本来是很简单的事情。

获取NGUI下某个控件的屏幕坐标代码如下:

UICamera.currentCamera.WorldToScreenPoint(obj.transform.position);
然后我也就信心满满地等待结果。

结果发现不对劲。

我们知道,Camera.WorldToScreenPoint 得到的坐标是以屏幕左下为0,0,右上是(pixelWidth,pixelHeight) 的一个二维坐标。换句话说,如果一个物体能够在对应的Camera下看得到,那么对应屏幕坐标x和屏幕坐标y 肯定不是一个负数。

而我得到的居然是一个负数。

经过一个多小时的折腾。

才发现,我的获取屏幕坐标的代码在Awake 里面。这个时候物体的坐标还未被NGUI正确地初始化。导致得到的屏幕坐标也是不对的。

经验1: NGUI 设置了Anchor 后,可能初始坐标不是正确的。

经验2:某个函数里面执行错误的,不代码一直是错误的。可以在Update里面一直执行,看看是不是和一开始执行的有差异,从而可以判断是不是Awake 函数 或者 Start 函数中还未初始化的原因。

当初我学习Unity系统的时候,我做了一些笔记,希望能帮到你入门。下面是一些关键点: 1. Unity是一个跨平台的游戏开发引擎,可用于开发2D和3D游戏。它提供了一个可视化的编辑器,让你可以轻松地创建场景、对象、材质等。 2. 编辑器界面:Unity的编辑器界面分为场景视图、层次视图、资源视图和检视视图等。场景视图用于查看和编辑场景,层次视图显示场景中的对象层次结构,资源视图用于管理项目中的资源,检视视图则显示了当前选中对象的属性和组件。 3. 游戏对象:Unity中的一切都是游戏对象,包括角色、道具、相机等。每个游戏对象都可以附加多个组件,比如渲染器、碰撞器、脚本等,用来实现不同的功能和行为。 4. 脚本编程:Unity使用C#作为主要的编程语言。你可以编写脚本来控制游戏对象的行为。脚本可以挂载到游戏对象上,通过组件来访问和修改游戏对象的属性和方法。 5. 场景管理:通过场景管理器可以创建、编辑和切换不同的场景。你可以在场景中添加、移动、旋转和缩放游戏对象,设置摄像机视角,调整光照效果等。 6. 资源管理:Unity提供了资源视图来管理项目中的资源,包括纹理、音频、模型等。你可以导入和导出资源,并在项目中进行引用和使用。 7. 物理引擎:Unity内置了物理引擎,可以模拟物体的运动和碰撞。你可以给游戏对象添加刚体组件,设置质量、重力、碰撞检测等属性,实现真实的物理效果。 8. 动画系统:Unity提供了强大的动画系统,可以创建和编辑角色的动画。你可以通过动画控制器来管理不同的动画状态,并通过脚本控制角色的动画播放和过渡。 这些仅是入门的基本知识点,希望对你有所帮助。如果你还有其他问题,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值