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

Project1

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

[已经过期] 怎么在主角身上使用函数?在事件的脚本里面写的

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
346 小时
注册时间
2010-12-12
帖子
246
跳转到指定楼层
1
发表于 2014-2-6 10:40:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
就是以主角为对象调用一个函数啊,具体的代码要怎么写?

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

2
发表于 2014-2-6 11:59:30 | 只看该作者
脚本编辑器:

  1. class Game_Actor < Game_Battler
  2.     def show_actor_name
  3.        p @name
  4.     end
  5. end
复制代码
事件脚本:
  1. actor = $game_actors[1] #获取一号角色
  2. actor.show_actor_name # 显示角色名字也就是调用了函数
复制代码

点评

0_0  发表于 2014-2-6 18:34
例子很具体喵,等待LZ认可中~  发表于 2014-2-6 18:27

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 不厌其烦地解答,所以重赏

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
346 小时
注册时间
2010-12-12
帖子
246
3
 楼主| 发表于 2014-2-7 14:32:06 | 只看该作者
铃仙·优昙华院·因幡 发表于 2014-2-6 11:59
脚本编辑器:事件脚本:

能详细解释一下原理吗?
我在事件脚本里面是这样子写的:

actor = Game_Actor.new
actor.show_actor_name

这样子写根本没反应,请问一下这里有什么问题吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

4
发表于 2014-2-7 15:30:20 | 只看该作者
本帖最后由 铃仙·优昙华院·因幡 于 2014-2-7 15:33 编辑
至高无上 发表于 2014-2-7 14:32
能详细解释一下原理吗?
我在事件脚本里面是这样子写的:


1. 你可能没有定义 show_actor_name 这个办法.

2. 如果你想要创建一个新角色的话, 这个写法没啥错. 只是一些角色名字, ID 等数据都要自己写.

3. 原理的话, 主角这边的人物都是被放在 $game_actors 这个全局数组里管理的, 其中的序号也就是 VX 里人物的 ID 号码.  你给人物调用某函数, 其实就是要通过这个函数去修改或者添加一些新的东西给这个角色. 所以使用之前要先保证获得那个角色的数据.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
346 小时
注册时间
2010-12-12
帖子
246
5
 楼主| 发表于 2014-2-9 17:56:42 | 只看该作者
铃仙·优昙华院·因幡 发表于 2014-2-7 15:30
1. 你可能没有定义 show_actor_name 这个办法.

2. 如果你想要创建一个新角色的话, 这个写法没啥错. 只是 ...

我在游戏中的事件脚本里改写成这样:
  1. actor = Game_ActionPlayer.new
  2. actor = $game_actors[1]
  3. actor.setup_shot(1, 0, 40, 0, 0, 64, "Bullet_0", true)
复制代码
其中"setup_shot"函数属于"Game_ActionPlayer"类,但是运行游戏时却抛出引用未定义函数的异常NoMethodError
我实在想不通这样的原因
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

6
发表于 2014-2-9 18:07:42 | 只看该作者
至高无上 发表于 2014-2-9 17:56
我在游戏中的事件脚本里改写成这样:其中"setup_shot"函数属于"Game_ActionPlayer"类,但是运行游戏时却 ...

1. 你重复赋值了 actor 这个变量.

2. Game_Actor 类默认是没有 setup_shot 这个方法的.

如果你想要修改, 那么就把 setup_shot 这个方法丢进 Game_Actor 里去才可以
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
346 小时
注册时间
2010-12-12
帖子
246
7
 楼主| 发表于 2014-2-9 18:22:18 | 只看该作者
铃仙·优昙华院·因幡 发表于 2014-2-9 18:07
1. 你重复赋值了 actor 这个变量.

2. Game_Actor 类默认是没有 setup_shot 这个方法的.

Game_ActionPlayer是我是用外置脚本中的一个类,超类是系统自带的Game_Character。
我前两行的代码不应该是生成actor作为Game_ActionPlayer的实例,然后带入$game_actors[1]进行赋值的意思吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

8
发表于 2014-2-9 18:25:46 | 只看该作者
至高无上 发表于 2014-2-9 18:22
Game_ActionPlayer是我是用外置脚本中的一个类,超类是系统自带的Game_Character。
我前两行的代码不应该 ...

完全看不出来有 带入赋值 这个意思. 而且也没有 带入赋值 这个含义.

你需要自己写一个 转换函数 来把默认的 Game_Actor 转换成 Game_ActionPlayer .

另外, 超类相同不代表这个两个类就相同.

除非你修改的是 超类. 但是这有可能引发一些错误.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
346 小时
注册时间
2010-12-12
帖子
246
9
 楼主| 发表于 2014-2-9 19:33:37 | 只看该作者
铃仙·优昙华院·因幡 发表于 2014-2-9 18:25
完全看不出来有 带入赋值 这个意思. 而且也没有 带入赋值 这个含义.

你需要自己写一个 转换函数 来把默 ...

整个问题并没有提到Game_Action这个类,只是外置脚本中有一个Game_ActionPlayer类,超类是Game_Character,和Game_Action没有任何关系。
我只是想在主角身上调用Game_ActionPlayer类中的setup_shot函数,因为在脚本中修改了这个函数的参数,游戏中主角的能力也会随之改变,所以就想在游戏中利用事件脚本随时改变这个函数的参数。
如果这样子解释不清楚的话,我是不是应该把工程范例发上来,具体问题具体分析?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
236
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

10
发表于 2014-2-10 13:09:04 | 只看该作者
Game_ActionPlayer 是你自己添加进去的.默认脚本没有这个.

所以, 你的标题写的 主角, 我只能认为你默认的 Game_Actor .

另外, 从来就没有 Game_Action 这个东东吧.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-4-19 19:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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