# GMS2-SIUI **Repository Path**: WuHuiSai/GMS2-SIUI ## Basic Information - **Project Name**: GMS2-SIUI - **Description**: 自制GameMaker Studio2 UI框架 - **Primary Language**: C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 2 - **Created**: 2020-07-15 - **Last Updated**: 2025-08-04 ## Categories & Tags **Categories**: game-dev **Tags**: None ## README ## GMS2-SIUI ### 介绍 GameMaker Studio2项目 小蟀制作的UI框架 ### 使用说明 分为两种方法 #### 单个View使用方法 1. 自定义object继承sai_oView 2. 重写或改写对应事件 3. 拖拽object到room即可 #### 嵌套View使用方法 1. 方法1完成自定义view 2. 通过sai_scrViewNew创建控件 ### View框架简介 >本UI框架以sai_oView为基础展开,所有的view均继承自sai_oView #### 代码创建view > 创建顶级view时parent参数填写noone ``` //在游戏坐标(100, 100)处创建顶级view page_root = sai_scrViewNew(noone, sai_oView, 100, 100); ``` > 创建子view时parent参数填写id ``` //page_root下创建按钮,相对坐标(20, 20) var btn = sai_scrViewNew(page_root, sai_oButton, 20, 20); ``` #### 自定义view > 创建空object继承sai_oView, 继承create事件定义属性, 重写user_event0绘制自身,例如sai_oTextView: ``` user_event0 /// @description 绘制文本 // You can write your code in this editor // Inherit the parent event event_inherited(); //清空surface draw_clear_alpha(c_white, 0); //绘制文本 draw_set_valign(fa_top); draw_set_halign(fa_left); draw_text(0, 0, text); ``` #### view属性 ``` //view类型 区分view类型和实例 view_type = "view"; view_id = 0; //是否是gui控件,仅顶部parent生效 view_is_gui = true; //view焦点,默认没有 view_focus = false; //子view列表 view_child_list = ds_list_create(); //父view view_parent = noone; //view是否显示 view_show = true; //view宽高 view_width = sprite_width; view_height = sprite_height; view_width_ = sprite_width; view_height_ = sprite_height; view_width = view_width>0?view_width:1; view_height = view_height>0?view_height:1; //view视图 view_surface = surface_create(view_width,view_height); //view事件id enum VIEW_EVE { DRAW = 0, //绘制 RESIZE, //改变大小 MB_L_DOWN = 2, //鼠标左键 MB_L_PRES, MB_L_RELE, MB_R_DOWN = 5, //鼠标右键 MB_R_PRES, MB_R_RELE, MB_M_DOWN = 8, //鼠标中键 MB_M_PRES, MB_M_RELE }; //事件返回值, 默认true for(var i=0;i<20;i++) { //是否拦截鼠标事件 view_mb_event_inter[i] = true; view_event_re[i] = true; //事件对应user_event_id view_event_id[i] = i; } //鼠标事件类型 view_mb_event_type = VIEW_EVE.MB_L_DOWN; //tap坐标存储 tap_x = 0; tap_y = 0; //背景色 view_clear_bkg = false; view_bkg_color = 0x83AF9B; ```