function n1_chuansong:main()
SL:print("===========进入到NPC界面")
-- 创建界面
local parent = GUI:Win_Create(self.Name, 0, 0, 0, 0, false, false, true, true)
-- 加载ui文件
self.parent = parent
GUI:LoadExport(parent, "A/n1_chuansong")
se
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-06 12:11:35 |
👁️ 阅读: 0
在浮生梦老师的前端课程中,`self.` 和 `n1_chuansong.` 的区别主要体现在面向对象编程和模块化设计上。
**主要区别:**
1. **`self.`** 是当前对象实例的引用,用于访问对象的成员变量和方法
2. **`n1_chuansong.`** 是直接访问模块的静态变量或函数
**使用 `self.` 的好处:**
```lua
function n1_chuansong:main()
-- 使用self访问对象属性
self.parent = parent
self.ui = GUI:ui_delegate(parent)
-- 在其他方法中也能访问这些属性
self:someOtherMethod()
end
function n1_chuansong:someOtherMethod()
if GUI:Win_IsNull(self.parent) then return end
-- 这里可以访问self.parent和self.ui
end
```
**使用 `n1_chuansong.` 的情况:**
```lua
-- 这是模块的静态变量
n1_chuansong.staticValue = 100
function n1_chuansong.staticFunction()
-- 静态函数,不依赖对象实例
SL:print("静态函数")
end
```
**实际开发中的建议:**
- 在对象方法内部(使用冒号定义的函数),**总是使用 `self.`** 来访问对象属性
- 这样代码更清晰,便于维护,也符合Lua的面向对象编程习惯
- 直接使用模块名访问的情况较少,通常用于全局配置或工具函数
如果你在方法内部使用 `n1_chuansong.` 来访问对象属性,可能会导致多个实例间的数据混乱,这是初学者常见的错误。记住:在方法内部,`self` 就是当前对象!
← 返回问答库