设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 146|回复: 2
打印 上一主题 下一主题

[有事请教] 使用VE_CharacterFrames导致游戏战斗报错

[复制链接]

Lv1.梦旅人

梦石
0
星屑
246
在线时间
36 小时
注册时间
2024-1-17
帖子
14
跳转到指定楼层
1
发表于 2024-10-25 18:17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
因为想要使用多帧行走图使用使用了VE下的VE_BasicModule和VE_CharacterFrames两个插件,结果战斗时报错Cannot read property 'setBlendColor' of undefined,想问问大佬们这个如何解决...因为我只会画画不会编程TT
相关js文件已经打包好了,如果想测试可以用我的图图。拜托了呜呜呜

这个.rar

16.3 KB, 下载次数: 3

Lv1.梦旅人

梦石
0
星屑
246
在线时间
36 小时
注册时间
2024-1-17
帖子
14
2
 楼主| 发表于 2024-10-26 10:00:15 | 只看该作者
没想到这个问题最后被自己解决了...在 RPG Maker MZ 中查看详细的错误调用栈信息,主要可以通过 **F8 调试控制台** 或 **F12 开发者工具**来完成。以下是查看调用栈信息的具体步骤:

### 1. 打开调试控制台
在运行游戏测试时(包括战斗测试),按下以下快捷键即可打开调试工具:

- **Windows**: 按 `F8` 或 `F12`
- **Mac**: 按 `Cmd + Option + I`

### 2. 查看控制台错误信息
调试工具打开后:

1. 点击 **Console(控制台)** 标签页,这里会显示所有的错误、警告和日志信息。
2. 如果有错误出现,通常会显示为红色的文本。点击错误信息旁边的小箭头可以展开错误的详细信息,包括调用栈。

### 3. 查找调用栈信息
在错误信息展开后,你可以看到每个错误的 **调用栈(call stack)**。调用栈会显示程序执行的代码路径,列出导致该错误的每一个步骤和位置,包括行号和相关文件名。通过这些信息,你可以更清楚地了解错误发生的具体原因。

### 4. 检查调用源头
在调用栈中,通常会列出出错的具体文件名、行号以及出错的代码片段。可以根据这些信息定位到插件文件或引擎代码中对应的位置,从而分析引起错误的原因。
在你的代码中,`target` 是通过 `this.mainSprite()` 获取的,而报错可能是因为 `this.mainSprite()` 返回 `undefined`,导致 `target` 没有定义。所以在调用 `setBlendColor` 前需要检查 `target` 是否有效。

### 修改代码
在 `updateSelectionEffect` 函数中为 `target` 添加检查,确保它存在且不是 `undefined`。你可以按以下步骤调整代码:

```javascript
Sprite_Battler.prototype.updateSelectionEffect = function() {
    const target = this.mainSprite();
    if (target && this._battler.isSelected()) {
        this._selectionEffectCount++;
        if (this._selectionEffectCount % 30 < 15) {
            target.setBlendColor([255, 255, 255, 64]);
        } else {
            target.setBlendColor([0, 0, 0, 0]);
        }
    } else if (target && this._selectionEffectCount > 0) {
        this._selectionEffectCount = 0;
        target.setBlendColor([0, 0, 0, 0]);
    }
};
```

### 代码解释
- `if (target && this._battler.isSelected())`:在调用 `target.setBlendColor` 之前,先确认 `target` 是有效的对象,以防止 `target` 为 `undefined` 时调用 `setBlendColor`。
- `else if (target && this._selectionEffectCount > 0)`:同样在这里也添加了 `target` 的检查,确保 `target` 存在才调用 `setBlendColor`。

### 最后步骤
1. 保存对 `rmmz_sprites.js` 的修改。
2. 在 RPG Maker MZ 中重新运行游戏或战斗测试,查看错误是否消失。

这个修改应当能有效防止 `undefined` 报错。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
246
在线时间
36 小时
注册时间
2024-1-17
帖子
14
3
 楼主| 发表于 2024-10-26 10:01:20 | 只看该作者
总之就是这样...希望能对大家有帮助
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 20:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表