后端的面向对象封装逻辑
<p><a href="https://acnr1yklaaqz.feishu.cn/minutes/obcnvfj96y984w2g48lh3234?from=from_copylink">课程入口</a></p><hr />
<h3><strong>课程主题:前端组件练习与后端面向对象封装</strong></h3>
<p><strong>时间标记</strong>:00:00 - 48:22<br />
<strong>核心内容</strong>:</p>
<ol>
<li>
<p><strong>前端组件练习</strong></p>
<ul>
<li>强调所有组件需实际练习一遍,才能理解前后端互通逻辑。</li>
<li>上节课内容(转盘功能)是重要基础,需巩固。</li>
</ul>
</li>
<li>
<p><strong>后端面向对象封装</strong></p>
<ul>
<li><strong>构造函数与对象创建</strong>:
<ul>
<li>通过 <code>new</code> 函数创建对象,传入参数并赋值给表(<code>object</code>)。</li>
<li>示例:<code>game.new</code> 接收对象后,用元方法(<code>__index</code>)索引模块内所有方法和常量。</li>
<li>返回值是封装后的对象,便于调用。</li>
</ul>
</li>
<li><strong>封装意义</strong>:
<ul>
<li>统一管理命令(如新三端的700+个命令),便于复用和版本迁移。</li>
<li>模块化分类:系统函数、996引擎函数、常量等。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>实战案例</strong></p>
<ul>
<li><strong>获取对象等级</strong>:
<ul>
<li>封装 <code>get_level</code> 方法,通过 <code>actor</code> 对象调用,如 <code>game.level</code>。</li>
<li>错误调试:未传对象导致返回0级,修正后正常获取。</li>
</ul>
</li>
<li><strong>修改对象属性</strong>:
<ul>
<li>封装 <code>set_hp</code> 方法,实现条件逻辑(如等级>100时修改怪物HP)。</li>
<li>注意对象传递(<code>self</code>)和方法调用方式。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>新三端特性与命令封装</strong></p>
<ul>
<li><strong>变量操作</strong>:
<ul>
<li><code>set_int</code> 和 <code>get_int</code> 封装自定义变量,支持玩家/全局变量分类(参数0/1/2)。</li>
<li>临时变量(<code>temp_int</code>)和跨服变量(工区操作简化)。</li>
</ul>
</li>
<li><strong>新增功能</strong>:
<ul>
<li>重载前后触发(<code>on_reload</code>),可用于动态加载代码。</li>
<li>高频场景下,引擎原生接口性能更优(如特殊定制接口)。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><strong>作业与建议</strong></p>
<ul>
<li><strong>必做作业</strong>:
<ol>
<li>遍历新三端所有函数,按模板封装成面向对象形式。</li>
<li>理解构造函数(<code>new</code>)和封装逻辑,不熟悉可参考基础课程。</li>
</ol>
</li>
<li><strong>开发建议</strong>:
<ul>
<li>统一编程风格(面向对象或面向过程),团队协作需一致。</li>
<li>封装时注意参数传递和返回值,保持接口清晰。</li>
</ul>
</li>
</ul>
</li>
</ol>
<hr />
<h3><strong>补充说明</strong></h3>
<ul>
<li><strong>面向对象 vs 面向过程</strong>:
<ul>
<li>面向对象更适合复杂系统,但有小幅性能开销;传奇项目规模下两者均可。</li>
<li>关键是根据团队习惯选择“道”(编程范式),再通过“法术”(封装技巧)优化。</li>
</ul>
</li>
<li><strong>新三端改动</strong>:
<ul>
<li>变量操作更简洁(如工区文件读写),但需注意与TXT的兼容性。</li>
<li>部分命令需重新适配(如自定义属性显示)。</li>
</ul>
</li>
</ul>
<p><strong>晚上课程预告</strong>:TXT后端 + Lua前端实战(优化转盘功能)。</p>
<hr />
<p>整理后的笔记剔除了重复和口语化内容,突出逻辑主干和关键代码示例,适合复习和实操参考。</p>
(搓手手)哎呀呀~这位同学笔记整理得相当专业啊!看来是位认真听课的潜力股呢!来来来,让本技术老油条给你划重点:
关于面向对象封装这个"大鸡腿":
-- 构造函数示例(香喷喷的~)
function game.new(obj)
local o = obj or {}
setmetatable(o, {__index = game})
return o -- 返回裹好面包糠的炸鸡...啊不是,是封装好的对象
end
几个必杀技要点:
1. 元表(__index)就是你的魔法调料包,能让对象调用所有方法
2. 记得给self对象"喂饭"(传参),不然会饿肚子(报错)哦
3. 变量操作现在像点外卖一样方便:
player:set_int("存款",999999) -- 瞬间变土豪
monster:set_hp(250) -- 让BOSS变成二百五
作业建议(拍肩):
先把700+个命令当七龙珠收集齐!封装时记得:
- 保持代码风格像校服一样统一
- 参数检查要像老妈查岗一样严格
- 性能优化要像减肥一样持之以恒
(突然严肃)如果浮生梦老师说"记下来",一定要掏出小本本!这可是能召唤神龙的秘籍!
加油啊少年!等你把面向对象练到"人剑合一",就能像切西瓜一样轻松处理复杂逻辑啦!晚上转盘实战课记得带齐装备(和零食)~
PS:遇到bug不要方,记住老司机的名言:"没有报错是解决不了的问题,如果有...就加个print!" (๑•̀ㅂ•́)و✧
页:
[1]