NGUI外包开发总结一下今天的收获
先总结一下今天的收获:在一个脚本类中对其成员变量进行初始化时,什么时候在Awake()中,什么时候在Start()中是有讲究的。
1)当成员变量会被外部脚本引用时,尤其是该成员变量是一个自己定义的非脚本类必须用构造函数初始化的时候。并且,被外部脚本引用指的是 “引用该变量的内部成员函数或属性被外部函数调用的时候”,该成员变量应该在Awake函数中进行初始化。
2)如果该成员变量只在自身所在的脚本类被引用时,则应该在Start函数中进行初始化。
今天遇到的第一个坑就是因为没有注意以上两点。我在Start函数中使用构造函数初始化了一个Poker类,但是这个类的实例在自身的公有方法中,被外部其他脚本调用了。这倒不是最重要的,因为之前我遇到过一次。重要的是:在Update()函数中拷贝预设体,其Awake()函数在当前帧的Update中就会被立即调用,但是Start()函数则会在在下一帧执行。
第二个坑是这样的:我将一个共有函数绑定到NGUI的UIButton脚本里的OnClick事件中作为事件处理函数,在这个共有函数中使用了两个if语句,则当事件触发时函数不会被执行,但是我改为 if(){} else if(){}就可以执行,明明相同的逻辑却又不一样的结果,让人匪夷所思呀。
第三个坑是:在NGUI中有一个大坑,就是创建NGUI中的游戏对象时,如果你使用Instantiate()函数,创建的控件会非常的大,但是使用NGUITools.AddChild()函数时生成的控件大小就会正好合适。【原因还不祥】
一下我将之前遇到的问题说一下,也是空引用异常的问题,和第一个坑差不多,其实也不能说是坑,而是自己对自己的逻辑没有考虑清楚,将各种类的相互引用考虑进来就会发生问题的。
之前已经实现了跑道的动态生成,今天要是实现的是在动态生成的跑道上的路点处随机产生提前准备好的陷阱预设体。
遇到的问题:因为之前在动态生成跑道时,顺便实现了另一个类,路点管理器类。我们的陷阱就要在路点附近生成,所以,利用之前跑道上自带的路点是很好的选择。但是,将道具生成器脚本类顺利加入到之前的代码还是比较繁琐的。因为封装的函数太依赖于动态生成跑道和记录游戏角色附近的路点这两个逻辑,所以必须再次明白之前是如何设计生成跑道和如何计算路点的,并且这还不是最重要的。
最重要的问题是:在ElementsGenerator脚本类中维护一个List<Transform> waypointList来负责在当前跑道上所有路点处生成障碍物、陷阱。由于是脚本类,所以并不存在构造函数这个概念,所以我就在 Awake()这个函数中创建waypointList,但是我明明已经创建了该列表,但是总是报空引用这样的错误。我百思不得其解,最后,我明白了为什么???
主要问题是:我在PlayMove这个脚本类中的Awake()函数中对作为单例出现在整个游戏场景中的跑道生成器进行了初始化:raceTrackGenerator.Init () 这里这个函数的初始化是在 waypointList之前执行的【不同脚本中的Awake函数执行顺序我不知道如何确定】。主要问题的产生就是因为跑道生成器初始化时需要调用ElementsGenerator脚本类的GetWaypointList()函数,但是此时该函数必须的waypointList还没有创建出来。
NGUI外包开发总结一下今天的收获的更多相关文章
- app外包开发注意事项大全『最新』
随着移动互联网的高速发展,很多互联网创业公司或传统向互联网转型的公司都急需发开一款app软件,多数公司会选择让外包公司来开发.问题来了,App外包市场鱼龙混杂,我们要如何在这里面选择一个靠谱的公司,这 ...
- SNMP开发c#,高薪诚聘,或者外包开发
现在手里有一个IT资产管理方面的项目,主要会用到SNMP协议,要用这个协议进行开发,对网络上的设备进行控制, 现在高薪诚聘高手,或者项目外包合作,有意向的同学们可以联系我,时间紧迫, QQ:39011 ...
- 我想外包开发一个APP,需要多少钱,多少时间?
在一个阳光明媚的下午,我正瘫坐在椅子上改bug.忽然有人给我发微信:“我想做个app,多长时间,多少钱?” 从我从业iOS开发到现在,这个问题被问过无数次,比那句:“你是程序员,那你会修电脑吗?”还要 ...
- 承接Holograms外包 Holograms内容定制 Holograms场景外包开发
HoloLens仿真器与文档现已向开发者们开放 如何为Microsoft HoloLens全息眼镜开发应用? 每款运行Windows 10的设备都使用了相同统一的Windows内核.所以你学习了所有有 ...
- AR图像识别 AR识别图像 AR摄像头识别 外包开发 AR识别应用开发就找北京动点软件
当绝大多数手机厂商还在追求后置双摄拍照的时候,已经有人开始潜心研究AR手机了.刚刚结束的美国消费电子展上,华硕发布了全新的ZenFone AR手机,配备5.7英寸2K屏.骁龙821处理器.8GB内存, ...
- HMCharacteristicType 承接homekit 外包开发 微信 ELink9988
承接homekit 开发 微信 ELink9988 让HMCharacteristicTypePowerState:String配件的电源状态.该值是一个布尔值.让HMCharacteristicTy ...
- iOS - 外包开发常用第三方库(1)
一:第三方插件1:基于响应式编程思想的oc地址:https://github.com/ReactiveCocoa/ReactiveCocoa2:hud提示框地址:https://github.com/ ...
- app开发外包注意事项,2017最新资讯
我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...
- 【Unity3D游戏开发】NGUI之多分辨率下完美分布式协同开发 (五)
NGUI多分辨率下完美分布式协同开发:不同分辨率下相对于屏幕坐标的Perfab数据不再丢失 NGUI多分辨率下完美分布式协同开发不同分辨率下相对于屏幕坐标的Perfab数据不再丢失 开发问题 原因分析 ...
随机推荐
- 信号single
信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 Model signals pre ...
- MNIST机器学习入门
"python: 3.5" # -*- coding: utf-8 -*-"""Created on Tue Oct 16 15:29:38 2018 ...
- KendoUi 学习笔记(二) Grid
Kendo.ui.Grid Kendo Ui Grid控件,继承至Widget. 一.构造 allowCopy Boolen|Object (默认:false) 当他设置true, ...
- 连号区间数(2013年第四届c/c++ b组第10题)
题目描述 标题:连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个 ...
- .NET复习笔记-泛型
1.yield关键字用于返回迭代器具体的值,如下框代码所示 /// 返回0~9整数集合 public static IEnumerable<int> yieldSampleMethod() ...
- if ,while ,for 的掌握
a)python的缩进和冒号 对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次. 缩进的空 ...
- python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法
在ide中执行python程序,都已经在默认的项目路径中,所以直接执行是没有问题的.但是在cmd中执行程序,所在路径是python的搜索路径,如果涉及到import引用就会报类似ImportError ...
- Mac 电脑终端上传项目到github上
1.安装Git 去官网自己研究(这个是很全的,也很详细:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b806 ...
- Ubuntu下部分Java软件字体渲染问题解决方法
On ubuntu or in general Linux OS, fonts in some Java software(like Geogebra, Arduino) looks terriabl ...
- MySQL基本操作——1
1.命令行启动或关闭MySQL服务:方式一:计算机--右击管理--服务方式二:net start MySQL服务器名称net stop MySQL服务器名称 2.登录和退出(必须在MySQL服务启动的 ...