unity scrollview 遇到的问题
一个scrollview作为翻页,这样的效果调整。
一页上面有三个scrollview,这三个scrollview上的items不受下层整个页面的scrollview的裁剪,导致滚动的时候,上层items会从页面外面飞入。这个问题我还没有解决,这个问题只有第二次以及以后打开界面才会出现,第一次打开不会出现,
所以我断定是我在第一次关闭界面的时候有些内容没有释放导致的。
现在采用迂回战术,关闭的时候不关闭,而是隐藏,这样就不会出现这个问题了。
但是根本原因,后续有空再研究。
2.我翻页使用scroll,反复的调整参数,都不能达到好的效果。
后来改为Spring.Panel.Begin(xxx),效果完美。
3.childcenter要谨慎使用,一般一次显示一格的才使用,一次可以显示多格的不要随便加,不然容易出问题。
4.今天替换美术拿过来的资源,居然和策划文档的功能都不一样。忧伤,还增加了功能。
关键是遇见一个大坑。大概是上午的时候,开始学习合成atlas图集,旁边的同事教我用ngui->open->atlas maker 制作了图集,在我的电脑商运行完美。提交到svn,再被其他同事update之后,图集不能够显示。
这个坑真的是大坑,关键是我没有unity和图集相关的基础,导致我遇见问题的时候不知所措,找人解决也不知道是什么问题,后来大概7点多的时候,组长说是图集的问题。让用TexturePacker重新生成一份,我本地安装这个工具却出现dll找不到的错误,于是放弃,先让其他人生成给我用吧,解决问题先。。。
可是给我之后还是不能用。
后来就不知道什么原因了,大概8点多,客户端的人都走完了,留我一个人在这里。今天是大周星期五。我下决心一定要解决的突然我发现我电脑有安装TexturePacker,然后我自己生成了之后就可以了。 其他电脑也可以了。。。 其中还尝试了其他方法,看是不是其他问题,这些过程相当的有趣,所以找bug定位精准太重要了。。。这一点我在python上感觉到了优势。我在前公司的时候,组内大都是一年两年的新人,我是三年的老人,我看过《python源码剖析》,他们没看过。他们提出的python问题我基本都能够解答,并且那段时间给他们普及了很多python知识。
所以,理解原理真的是太重要了。
公司用的unity是版本是5.4.4.f1,ngui版本是3.10.1
visual studio:vs2015
vstounity:关联vs到unity 使得vs可以调试unity程序。
ngui3.10.1的下载地址
http://download.csdn.net/download/wxk_1054433720/9637687
先删掉原来工程目录下的ngui文件夹再import
纹理图片导入到unity中大小变小了,原来是被unity压缩了,选中纹理图片在Inspector中操作,2DSprite,然后勾选Generate mip maps,这样纹理就不能够被压缩了。
制作的界面和效果图不一样,前期是眼睛对着看,浪费了大量宝贵时间,现在改为放一张图片在下面,然后调整坐标。
美术给的资源都说按照效果图来,差评,理科生对这种不敏感,建议实际的坐标值,颜色值,文字大小数字标出来。
UIHelper.SetTexture,不用每个地方都去实现一下。
慎用居中插件,center inchild,各种恶心,还有各种毛病。
不能够用texture在unity编辑器中,打包回出现问题。
速度一定要快,给一个任务一定要按时完成,这就是效率。
什么地方可以快速熟悉unity编辑器的各种功能?
预制体的类.gameobject 报错:要实例化的对象为null。
这个原因是:
1.预制体的类是否名字和预制体一样;
2.如果一样,再看文件夹下面是否有对应的预制体,因为在unity编辑器中的Hierarchy中有的是在unity编辑器的内存中的,并不代表存在于电脑的硬盘中,所以,检查文件夹,如果没有就将预制体拖入文件夹中。
第二个任务是商城系统,简单说就是购买东西的一个界面,有n个标签,根据标签加载对应的物品,
当然是根据选择不同的标签,向服务器发送对应的标签数据,服务器返回对应的数据列表,
我拿到这些数据id之后,根据当前选中标签,或者是服务器发过来的itemtype,进行相应的设置,显示不同的内容。将需要显示的物品显示在一个scrollview中即可。
这就是显示部分。
另外一部分是对这些物品进行操作。
比如说我要查看物品的详情,或者说是购买物品。
物品显示分为物品的区域范围,这个范围点击是可以查看详情的,在详情里面可能会有购买的操作,或者是其他的操作。
另外物品区域的下方还有一个显示价格的按钮,点击可进行购买。
这种点击操作基本都是向服务器发送请求得到数据,或者根据id去读取本地的表中的数据用于显示。
这里的id是怎么得到的呢?我怎么知道我点击的是那个按钮呢?对应的id是多少呢?
我的做法是对于每一个物品,我在设置显示信息的时候同事对象保存了他的id,点击的时候在响应函数里面获取本对象的mId就可以知道点击的是哪一个物品。
然后拿到这个id之后,我就可以获取到需要显示的数据了。
还有一个问题是一个页面如何多重使用呢?即页面复用的问题,我的做法是:
如果是可以根据页面标签来进行分类的,那么 以页面标签进行分类,进行显示不同的内容。
如果不能通过页面标签来进行分类的,我就通过服务器发过来的id去对应的表里面找type,找到对应类型,然后根据类型来确定具体应该显示什么内容。
这样就能够很好的处理显示的内容了。
另外,这个商城系统里面还有一个抽奖的内容,这个浪费了我挺多时间的,大概一天半吧,现在还没有做完整。
明天继续去加班,把事情做完,自己测试几遍,现在这个公司程序员不仅仅要写代码,还要把美术给的界面资源拼接成效果图,这个过程极其恶心,然后还要负责测试。这个也是我觉得不爽的地方。十分怀念原来那种,不需要管界面,策划做好,我只需要写代码,写好功能之后直接丢给策划,策划安排测试人员一路跟着测bug,然后修bug,然后再测,直到没有bug,那种生活太奢侈了。
不过现在更能够锻炼人,仔细想一想,游戏开发,过来过去不就是那几个系统么?至少通用的系统在每个游戏里面都要用到的,所以把这些模块做得滚瓜烂熟之后,我想以后开发效率就会高了吧,嗯嗯,加油吧。新进入一行一定会有一个阵痛期的。
做游戏就是要速度快,给一个任务,很快就做完了,然后代码质量也高,bug也少,那就是非常优秀的程序员了。现在我还要向这个方向努力