网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月01日漏签0天
codea吧 关注:924贴子:10,894
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 17回复贴,共2页
  • ,跳到 页  
<<返回codea吧
>0< 加载中...

关于Codea程序、游戏结构的一些技巧

  • 只看楼主
  • 收藏

  • 回复
  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本帖比较属于Codea进阶教程,最好有一定基础在来看(当然即使你没基础也可以看,不过有可能会看不懂)
本帖主要讨论在Codea中的游戏、程序的一些问题,应该还是比较有帮助的。
本帖会不定期更新。
另外我的语文不好,所以可能有表达不当的地方还请各位指出。


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@eebbk163 @Syesw @dt_st9 @lee7404


2025-08-01 03:50:50
广告
不感兴趣
开通SVIP免广告
  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
【 第一章 】Codea中两个强大的工具:table和class
表(table)和类(class)都是十分有用的工具,对写程序十分重要。所以熟练地使用他们是十分重要的。。。
table是lua的一个基本数据类型,class实质上也是个table。
接下来先讲解table的各种用法


  • Kokono909
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先复习一下Lua的基本变量类型吧
数字,文本,函数,表(table),用户数据类型(userdate)
前两个不用说,大家都知道。
函数:函数在lua中是基本类型,也就是说可以把函数储存在一个变量里。
大家习惯的一种函数写法:
function aaa()
print("Hello")
end
就相当于创建一个函数,并把函数赋值到aaa这个变量里
所以上面的代码也可以写成这样:
aaa = function()
print("Hello")
end
函数是基本变量类型的这个特点十分好用,有点类似于C语言的函数指针
所以在lua中操作函数十分方便


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在Lua中,表(table)是最强大的工具。
它可以千变万化,实现很多功能
创建一个table很简单:
abc = {}
这样,就创建了一个叫做abc的空table
table为什么叫做表呢,因为它的储存方式和表基本一致。
所以,你可以把table形象化理解为这个:


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其中,key代表键值,value代表键值对的变量。
key和value都可以是Codea中的任何基本类型,它可以是数字,文本,函数,甚至是另一个表,用户类型等
key和value是一一对应的,所以,table中的对应是这样:
table[ key ] = value
这就是对table中赋值的通式了
所以上表可以写成这样:
table["a"] = 42
table["b"] = "CodeaString"
table["c"] = function() print("Hello") end
table["1"] = 30


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接楼上:
table[2] = table2
table[3] = vec2(0,0)


2025-08-01 03:44:50
广告
不感兴趣
开通SVIP免广告
  • HexBlues
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶一个!


  • eebbk163
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哇!就开始更新啦!赞一个!


  • lee7404
  • 闻名一方
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
弱弱问一句,用户类型是啥?


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在table中,通过key值可以索引到对应的value值。所以,用这个特性可以用table来做数组,或是自定义结构。
用table做数组的一个例子:
aaa = {}
for i = 1, length do
aaa[i] = i * 2
end
这样就创建了一个名字叫aaa,长度为length的一维数组。
这里有一点要注意:一般来说,在lua中的数组下标是从1开始。
因为在value中可以再赋值为一个table,所以二维数组可以这样创建:
aaa = {}
for x = 1, length do
aaa[x] = {}
for y = 1, width do
aaa[x][y] = 0
end
end
table也可以用来做自定义数据结构:
可以创建一个这样的table:
pos = {}
pos.x = 100
pos.y = 200
以上2种用法都是常用的,在很多lua程序中都能看到,所以大家需要对它很熟悉


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用户数据类型(userdate)
这种类型是在C语言中定义的,Lua中不能对它们随便修改。在Codea中主要是这几种:vec2, vec3, vec4, touch, matrix, color, mesh, shader
Codea关于这几种类型都提供了相应的函数,使用都会比较方便。所以我推荐尽量先使用Codea提供的这几种类型,因为它们的处理速度更快?(这一点我也不是很清楚,如果错误还请指出)
比如储存颜色,你就可以直接用color这个类型来储存


  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1.2 table的其他用途
table还有一个很大的用处:作函数库
如果你不知道什么是函数库,总该知道 math.cos() , table.insert() , os.time() 这样的命令吧
这些函数都是放在一个table里面的,比如os,math,table等等
而lua中的基本函数表有这一些:table, math, os, string, io
Codea的提供的函数表:physic, sound, music, tween
所以当你不知道一个函数表有什么函数是,可以这样获取:
比如看os表里有什么函数:
for k,v in pairs(os) do
print(k,v)
end
啊,上面又出来一个新东西:pairs()
这个是用来遍历一个table的
for k,v in pairs(table) do
end
这个循环会遍历table里的所以key值,也会给出key值对应的value值
value 就相当于 table[k]
这里说明一点:v是 table[k] 的一个复制,所以想让value的值更改的话,不能直接给v赋值,要给 table[k] 赋值


2025-08-01 03:38:50
广告
不感兴趣
开通SVIP免广告
  • 地丶布鲁
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1.3 table的其他相关
table在创建是也是很有技巧的呢
如
a = {}
a.w = 2
a.r = 5
上面这个可以写成:
a = {w = 2, r = 5}
是不是简略很多呢
在创建数组是可以写成:
如
a = {2, 4, 9, 5}
相当于:
a = {}
a[1] = 2
a[2] = 4
a[3] = 9
a[4] = 5


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 17回复贴,共2页
  • ,跳到 页  
<<返回codea吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示