You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GMS2调用instance_create_layer提示text_layer不存在,求修复方案

解决GameMaker Studio 2中instance_create_layer提示图层不存在的问题

针对调用instance_create_layer时提示"text_layer"不存在但实际图层已存在的问题,可按以下方向排查解决:

  • 检查名称一致性:GMS2的图层名称严格区分大小写,且不允许拼写误差。仔细对比代码中的"text_layer"与房间内实际图层的名称,确认大小写、下划线、空格完全匹配。
  • 确认当前房间包含目标图层:如果代码在全局脚本、跨房间实例中执行,当前激活的房间可能并非包含"text_layer"的房间。可添加调试代码验证:
    var _layer_idx = room_get_layer_index(room, "text_layer");
    if (_layer_idx == -1) {
        show_debug_message("当前房间:" + string(room) + " 不存在text_layer图层");
    }
    
    若返回-1,需确保代码在目标房间激活后执行(比如放在房间的Room Start事件、实例的Create事件中)。
  • 验证图层类型:instance_create_layer仅能在**实例类型图层(Instance Layer)**上创建实例。检查"text_layer"的类型,若为背景层、瓷砖层等其他类型,需切换为实例图层,或更换到正确的实例图层上创建对象。
  • 排查代码执行时机:如果代码在房间初始化前执行(比如全局启动脚本),此时房间图层尚未加载,会导致图层不存在的错误。确保代码在房间完全加载后运行。
  • 优化代码逻辑:可以先确认图层存在再创建实例,同时简化条件判断:
    var _layer_idx = room_get_layer_index(room, "text_layer");
    if (_layer_idx == -1) exit;
    
    var _obj = instance_exists(obj_text) ? obj_txt_queued : obj_text;
    var _new_inst = instance_create_layer(0, 0, "text_layer", _obj);
    
    with (_new_inst) {
        msg = argument[0];
        originInstance = instance_exists(other) ? other.id : noone;
        background = argument_count > 1 ? argument[1] : 1;
    }
    
    with (obj_phae) {
        if (state != scr_player_state_lock) {
            lastState = state;
            state = scr_player_state_lock;
        }
    }
    

内容的提问来源于stack exchange,提问作者Senkyetsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:35:37