Project1

标题: 怎么在主角身上使用函数?在事件的脚本里面写的 [打印本页]

作者: 至高无上    时间: 2014-2-6 10:40
标题: 怎么在主角身上使用函数?在事件的脚本里面写的
就是以主角为对象调用一个函数啊,具体的代码要怎么写?
作者: 铃仙·优昙华院·因幡    时间: 2014-2-6 11:59
脚本编辑器:

  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 # 显示角色名字也就是调用了函数
复制代码

作者: 至高无上    时间: 2014-2-7 14:32
铃仙·优昙华院·因幡 发表于 2014-2-6 11:59
脚本编辑器:事件脚本:

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

actor = Game_Actor.new
actor.show_actor_name

这样子写根本没反应,请问一下这里有什么问题吗?
作者: 铃仙·优昙华院·因幡    时间: 2014-2-7 15:30
本帖最后由 铃仙·优昙华院·因幡 于 2014-2-7 15:33 编辑
至高无上 发表于 2014-2-7 14:32
能详细解释一下原理吗?
我在事件脚本里面是这样子写的:


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

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

3. 原理的话, 主角这边的人物都是被放在 $game_actors 这个全局数组里管理的, 其中的序号也就是 VX 里人物的 ID 号码.  你给人物调用某函数, 其实就是要通过这个函数去修改或者添加一些新的东西给这个角色. 所以使用之前要先保证获得那个角色的数据.
作者: 至高无上    时间: 2014-2-9 17:56
铃仙·优昙华院·因幡 发表于 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
我实在想不通这样的原因

作者: 铃仙·优昙华院·因幡    时间: 2014-2-9 18:07
至高无上 发表于 2014-2-9 17:56
我在游戏中的事件脚本里改写成这样:其中"setup_shot"函数属于"Game_ActionPlayer"类,但是运行游戏时却 ...

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

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

如果你想要修改, 那么就把 setup_shot 这个方法丢进 Game_Actor 里去才可以
作者: 至高无上    时间: 2014-2-9 18:22
铃仙·优昙华院·因幡 发表于 2014-2-9 18:07
1. 你重复赋值了 actor 这个变量.

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

Game_ActionPlayer是我是用外置脚本中的一个类,超类是系统自带的Game_Character。
我前两行的代码不应该是生成actor作为Game_ActionPlayer的实例,然后带入$game_actors[1]进行赋值的意思吗?
作者: 铃仙·优昙华院·因幡    时间: 2014-2-9 18:25
至高无上 发表于 2014-2-9 18:22
Game_ActionPlayer是我是用外置脚本中的一个类,超类是系统自带的Game_Character。
我前两行的代码不应该 ...

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

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

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

除非你修改的是 超类. 但是这有可能引发一些错误.
作者: 至高无上    时间: 2014-2-9 19:33
铃仙·优昙华院·因幡 发表于 2014-2-9 18:25
完全看不出来有 带入赋值 这个意思. 而且也没有 带入赋值 这个含义.

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

整个问题并没有提到Game_Action这个类,只是外置脚本中有一个Game_ActionPlayer类,超类是Game_Character,和Game_Action没有任何关系。
我只是想在主角身上调用Game_ActionPlayer类中的setup_shot函数,因为在脚本中修改了这个函数的参数,游戏中主角的能力也会随之改变,所以就想在游戏中利用事件脚本随时改变这个函数的参数。
如果这样子解释不清楚的话,我是不是应该把工程范例发上来,具体问题具体分析?
作者: 铃仙·优昙华院·因幡    时间: 2014-2-10 13:09
Game_ActionPlayer 是你自己添加进去的.默认脚本没有这个.

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

另外, 从来就没有 Game_Action 这个东东吧.
作者: 至高无上    时间: 2014-2-10 15:18
铃仙·优昙华院·因幡 发表于 2014-2-10 13:09
Game_ActionPlayer 是你自己添加进去的.默认脚本没有这个.

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

这个是工程范例,日本那边的,自己机翻了大部分:http://pan.baidu.com/s/1o6rw0sE
在脚本》通用的动作》Game_ActionPlayer》第430行,发射参数设置。
这里定义了一个setup_shot函数,原本各个变量都是直接赋值的,我自己加上了可以更改的参数。
我希望可以在游戏的过程中用事件脚本调用这个,随时更改主角发射子弹的参数,但是能力有限,无论怎么测试都没办法实现,所以想请你帮忙一下,谢谢。
作者: 铃仙·优昙华院·因幡    时间: 2014-2-10 18:36
至高无上 发表于 2014-2-10 15:18
这个是工程范例,日本那边的,自己机翻了大部分:http://pan.baidu.com/s/1o6rw0sE
在脚本》通用的动作》 ...

有空了再说吧. 最近回回帖子倒是可以. 事情太多了, 忙死.




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1