================================lua================================
也是觉得自己技术太垃圾,就不停的补充自己的基础。慢点扎实下来。
看了两章书,没有记住什么有用的东西,就那么点。
1.lua的for对于表达式求值是一次执行的,所以不用担心效率的问题。
以前我这样写
table={}
local length = #table
for idx = 1, length do
other statements
end
这里table的求长度在for语句里面仅仅求值一次,所以是错误的用法,应该写到for里面
table = {}
for idx = 1, #table do
other statements
end
2.lua 有这么一个很好的函数,但是其他的一个博客说效率不高,不过感觉很好用。叫做unpack,
他会将数组里面的数据返回。
例如
local testTable = {1, 2, 3}
print(unpack(testTable))
就会输出 1 2 3是遍历数组内容的很好的方法呀。
至于看的其他的知识点,白天看了,晚上就记不住了,很是汗颜。
================================操作gui文件================================
2.脚本里面逻辑区分很多都是以层来区分的。一般就是操作一个gui文件。
主要是
local function loadGUI()
end
local function initGUI()
end
local function updateGUI()
end
loadGUI函数是用来将gui文件加载到内存的,还有将一些gui里面的控件代理起来,方便以后用,就是起一个别名。
initGUI主要是设置一下GUI的默认值之类的,例如setTag放到这个函数里面比较好。
updateGUI就是将数据刷新到界面来用的。什么时候会触发这个函数呢,就是来了数据的时候。
主要是 网络数据来的或者本地玩家打开界面的时候。
以前写代码会将updateGUI写的非常大,非常臃肿。几乎几百行代码。受过一次打击,知道将他分割成很多函数。这样逻辑比较好梳理。
当然loadGUI和initGUI也应该这样的意思,否则就会在一个文件里面有几个函数,但是每一个函数都太大了。
大约就是如此了。
在游戏中写脚本很关键的三个部分就是
gui文件操作,这里主要是资源的利用,所以游戏项目的目录要很熟悉。包括骨骼动画和图片资源什么的。
本地数据,这里主要是xml或者二进制数据,经历过的游戏项目都会在本地存放一些数据,是很大很多的表,不是xml配置,而是从excel里面导出的数据。
网络消息,最起码应该能收发消息,这样才能和服务器联调。经常遇到的问题是数据刷新的问题。例如一个界面需要刷新数据。
1.发送请求数据消息-->数据返回-->将数据刷到界面-->显示界面
2.打开界面-->请求数据消息-->数据返回-->将数据刷新到界面。
两种方式在游戏中都很常见。例如打开一个界面有时候会停顿一下,其实是第一种在请求数据,网络如果不好,还会转菊花,或者显示网络不好之类。
第二种就是早早的把界面打开了,但是能明显看到界面数据的变化,突然都有数据了。
这两种方式没有谁很好,暂时也没有见过什么更好的办法。我们的解决方案是将尽可能多的数据在游戏登录的时候发送到客户端,但是明显的,登录的时候玩家就会
等待很长的时间也是很无奈的。