【优化建议】关于分类组



  • 无法通过实例uid来进行判断操作。比如将uid为238的实例攻击速度属性设为1,导致实现逻辑变得更为复杂,甚至不如写java简单



  • @gxf1033 不是有一个按uid选中实例的条件吗,有uid的话用这个条件选中对应实例后就能设置它的实例变量了



  • @拉布拉多拉得多不多 不是,描述的不清楚,怎么说呢,比较复杂,是这样的……怪物组有a,b。然后我随机生成怪物组若干个a.b我现在拿到uid以及对应的怪物名字。现在我需要a满足一定条件时移动到主角位置,按uid选中实例后,还要,如果这个实例是a时,a移动到主角位置,但是我写这个动作时必须用到a,我这是个循环我要用动作组或者是语法name=a的而不是必须鼠标操作点选a来完成这个代码。
    也就是即使你按uid选中了这个实例,但是后续动作你依旧要通过鼠标选择来完成代码,写不到循环啊



  • @gxf1033 啊?跟鼠标还有关系?能选中基本上就能操作这个实例了啊🤔
    另外原来你这个“分类组”原来是指同类组啊,我理解理解你的描述哈:
    怪物同类组里有怪物对象A和怪物对象B,然后你随机生成怪物同类组的若干个A、B,也就是说,此时场景内有怪物对象A和怪物对象B的若干个实例。
    此时你能拿到uid和对应的怪物名字,你要所有怪物对象A的实例都具备“满足一定条件时移动到主角位置”的行为。
    然后你期望中的事件写法是:按uid选中怪物同类组的某个实例,且怪物同类组的名称变量为a时,符合该条件的怪物同类组的实例移动到主角位置。
    然后你遇到的问题是:你写这个动作时必须要用到对象A,但是你目前认为除了用鼠标点选以外,没有任何其他符合你思路的方式(例如动作组或者是你说的语法name=a)选到A??
    是这个意思吗?
    目前从你的描述来看的话,我个人是上面的这段理解,可能不完全符合你想描述的本意,要不你讲讲你是想要做什么功能,可能反而理解起来会直观一点。😂



  • @拉布拉多拉得多不多 这个,你按uid选中实例后,然后执行动作时,你是不是要选择实例的对象才能设置,你怎么选实例对象的?你是不是要用鼠标去右边菜单栏选择对应的,我现在是在循环里写的我怎么用鼠标去点你的唤境菜单,,,,undefined



  • @拉布拉多拉得多不多 你好像理解我的意思了,,但是我不是实现不了我要的功能,能实现但是相对比较麻烦,,,,增加了逻辑复杂性,然后也不容易复用,没添加一个对象都要加代码。



  • @拉布拉多拉得多不多 我的场景是,,房间随机刷新不定数怪物,怪物属性随机的,名字随机的,技能随机的,模型随机的。这些完成之后,对于攻击判定技能属性加成,当前只能鼠标点选菜单就很麻烦了。



  • @拉布拉多拉得多不多 导致不得不在创建时记录对应的怪名和uid放入map循环读取,但是这样就会写很多重复的代码,比如怪物abcd都要来一套,,,,不能发图片,发图你就明白了,,

    反正大概意思就是,代码中蓝色的字必须点选,能不能做成可以编辑的。

    比如【怪物】显示怪物
    可以写成 map.get("怪物")显示怪物



  • @gxf1033 可以发图片的,你不要把截图粘贴后多出来的那张图片删掉,提交后就能看到图片了,如果删掉多出来的那张图片,就会只剩一个undefined
    或者是用上传图片的方式也可以发图片,如果是粘贴截图的方式发的话,就需要像上面说的这样,不要删掉多出来的图片



  • @拉布拉多拉得多不多 能看到图吗?我付了图。undefined

    就是这个火球法师蓝色的字只能鼠标在菜单里选出来导致不能以传参的形式写在循环里。

    我想
    for
    if map.get(name)......

    而不是

    for
    if 火球法师......
    if 冰法.....
    if 近战牛头....

    功能是可以实现我就奢求更方便那种,,,,







  • @拉布拉多拉得多不多 可能我手机问题发不出去图



  • @gxf1033
    这条是用手机发的,测试图片是否可见
    undefined
    我这边用上传图片的方式是能发的



  • @拉布拉多拉得多不多 那就是我手机的问题了,,undefined



  • @拉布拉多拉得多不多


    那就看这几句话吧。

    代码中蓝色的字必须点选,能不能做成可以编辑的。

    比如【怪物】显示怪物
    却不能写成
    map.get("怪物")显示怪物

    现在蓝色的字只能鼠标在菜单里选出来导致不能以传参的形式写在循环里。

    我想
    for
    if map.get(name)......

    而不是

    for
    if 火球法师......
    if 冰法.....
    if 近战牛头....

    功能是可以实现我就奢求更方便




  • @gxf1033 你举例的这些个“火球法师”、“冰法”、“近战牛头”的后续动作的处理有共通点吗,还是基本不一样的?共通点的部分可以用同类组做统一处理的
    undefined
    undefined



  • @拉布拉多拉得多不多 不行,要算1技能的攻击距离加怪物施法距离,技能伤害加怪物原始伤害,他们有共通属性但是属性不一样



  • @gxf1033 可以的,只要实例选中正确,引用变量时就是所选中的实例的实例变量值,所以就算所有实例的值各不相同,只要条件筛选出的实例是正确的,那就能顺利引用到,不过有前提条件,那就是类似的实例变量要共同来源于同类组,例如有怪物对象A和怪物对象B,它们同属于怪物同类组C,此时它们都需要一个“施法距离”的变量,如果你分别给怪物对象A和怪物对象B添加这个变量,那么通过怪物同类组C就无法调用到它们各自的“施法距离”,而如果你是直接把“施法距离”这个变量直接加给怪物同类组C,那么怪物对象A和怪物对象B就会跟着拥有这个“施法距离”变量,那么遍历怪物同类组C的时候,即使怪物对象A和怪物对象B的这个变量的值不一样,也能做统一的逻辑处理,例如下面这样:
    两个怪物对象的攻击距离和攻击距离是不一样的
    undefined
    undefined
    事件如下:
    undefined
    undefined
    效果如下:
    可以看到左边的怪要挨得很近才能触发攻击(因为它攻击距离很短),而且生成的伤害文本是-2,而右边的怪很远就能触发攻击了(因为它攻击距离比较长),而且生成的伤害文本是-5
    这是因为上面的事件中,是以整个怪物同类组来做统一的行为处理的,所以除了引用的数据不一样导致了触发攻击的距离不一样和伤害值不一样,“精灵进入攻击范围内就进行攻击”这个整体的核心逻辑是它们两者通用的。
    undefined



  • @拉布拉多拉得多不多 我知道你为什么可以了,我的是场景开始时才创建的怪物,你的是放上去然后每个实例赋值,而你这个属性其实是怪物组属性。
    我的是怪物数随机,所以不能直接放。如果循环生成怪物时再单个赋值攻击属性也是可以的只是也很麻烦,必须建个数组保存各对象的攻击距离然后赋值给怪物组。哦可以这个方案是最好的,大神这个方案可以,加怪物的时候list.add就行了。大佬厉害厉害

    我错误的认为怪物组的实例≠怪物实例,,,,

    大佬再问个问题,有发送http请求的功能吗?我想通过连自己的后端,我看里面有转换post和处理json的功能但是没找到发送http请求的功能,ajax好像只能访问项目文件



  • @gxf1033 我这里只是为了快速演示省去了创建实例,实际上不同对象是允许设置不同的初始值的,创建不同对象的实例时会按这个初始值来,就不需要再在事件表创建的时候再额外设置值了,也比较方便(如果所有场景中存在对象的实例,那么初始值以第一个场景中的实例为依据(所有场景都会算上),如果任何场景都不存在对象的实例,那么就会以对象的默认值为初始值),后面那个问题的话,好像目前唤境是没有这个功能的。


登录后回复