通用技术 Lua 扩展开发插件简单介绍 (上)

陈子昂 · 2016年05月09日 · 最后由 心向东 回复于 2016年05月11日 · 1956 次阅读

本章节属于游戏产业对 lua 扩展开发或者测试用,游戏产业是 lua 和 C++,回调都在 C++ 里,外部开发者没法遍历,推荐使用轻巧的 sublime 来开发 lua,另本文一些函数是根据游戏本身来定义的,用于其他的是一样的。

1. 管理插件

管理 1 个开发 lua 的游戏的插件,先构建结构,Main.lua 为第一个 lua,使用 require 函数把其他依赖的函数加载进来
简单用法介绍,下面不声明了:

require("helloworld")使用方式非常简单,加载1helloworld.lua的代码块

先写 1 个 Main.lua 定义成员变量,管理插件其他自定义函数

其他自定义函数包含fuzhu.lua  fuzhuplayerHp.lua   fuzhuplayerInfo.lua UtilGUI.lua

2. Main.lua

require("fuzhu")
require("fuzhuplayerHp")
require("fuzhuplayerInfo")
--创建
function main() 
    TCreate()
end
--实体创建
function on_entity_game_stage()
    main()
end
--同步窗体
function on_timer(seconds)
    UpdatePane()
end

3. Fuzhu,lua
自定义函数的 TCreate() 的实现,main.lua 中的 require("fuzhu")

--关于collectgarbage内存回收根据个人需求来吧,如果脚本复制写多线程的,还是每个都加1个。

//UtilGUIfuzhuplayerInfo后面声明
require("UtilGUI")
require("fuzhuplayerInfo ")

--创建控件
function TCreate()

    local gui = nx_GetGui()

--判断是否可用
    if not nx_IsValid(gui) then return end

    local form_id = create_form (gui, "fuzhu",8,3,38,38,
        "  "," gui\\xxx.png")

--创建控件加入
    local btn_close = create_button(gui,form_id,
        "辅助","255,255,255,255",6,6,30,30,
        "gui\\xxx.png")

--局部函数,用于退出
    nx_AddCallBack(btn_close,"on_click"," fuzhuplayerInfo","on_form_z")
    return form_id

end

--类实例
local nKG = 0

function on_form_z(btn)
    local form_id = nx_GetForm("fuzhuplayerInfo")
--判断是否可用
    if not nx_IsValid(form_id) then
        fuzhuplayerHp()
        return
    end
    if nKG == 0 then
        nx_SetProp(form_id,"Visible",true)
        nKG = 1
    else
        nx_SetProp(form_id,"Visible",false)
        nKG = 0
    end
end

TCreat 这个窗口页面就介绍到这里,后面还有 fuzhuplayerHp 和 fuzhuplayerInfo,见 Lua 扩展开发插件简单介绍(下)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 5 条回复 时间 点赞

请教下这段代码的意思,尤其是 fullRect,insetRect


local temp=cc.Sprite:create(filename);  
local size=temp:getContentSize();
local fullRect=cc.rect(0,0, size.width, size.height)  
local insetRect = cc.rect(20,20,size.width-40, size.height-40);  
local bg = cc.Scale9Sprite:create(filename,fullRect,insetRect)
self._ins:addChild(bg)
self._bg = bg 


local screen_size = cocos.getVisibleSize()

bg:setLocalZOrder(0)
bg:setPosition({x=screen_size.width / 2, y = screen_size.height / 2})
bg:setContentSize( screen_size )

#1 楼 @lihuazhang 刚在九阴- -打架去了。
local bg = cc.Scale9Sprite:create(filename,fullRect,insetRect) --处理等比拉伸
self._ins:addChild(bg) --添加 bg,用于处理层级关系

#2 楼 @jiazurongyu fullRect,insetRect 这两个参数的意义呢? 我如果不用这两个参数, 直接用 cc.Scale9Sprite:create(filename) 会失真,拉伸的很丑

#3 楼 @lihuazhang 一般来说是基于 setPreferredSize() 去拉伸图片时生效,使用这个 cc.Scale9Sprite 比较好,常规写法就是你上面的。这个本来也无法理想化的同比缩放的。

看到 cocos 我还以为你们要搞啥呢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册