一种基于Unity3D游戏中NPC播放随机台词的方法与流程

文档序号:37313899发布日期:2024-03-13 21:05阅读:51来源:国知局
一种基于Unity3D游戏中NPC播放随机台词的方法与流程

本发明涉及游戏,特别涉及一种基于unity3d游戏中npc播放随机台词的方法。


背景技术:

1、一般的台词演播方式会先预设若干句台词,指定某个单位播放随机的台词,如果多个单位共用同一套预设台词,需要每个单位都进行一次随机计算,并且单位之间相互独立,表现上可能同时会有多个重复的台词表演,显得机械和生硬。如果使用ai的方案来实现台词演播,又会带来比较高的开发成本和运营成本,性价比不高。同时,当某个单位进行移除时,也要进行定时器的清理,容易造成内存泄漏的bug,稳定性较差。


技术实现思路

1、为解决上述问题,本发明提供了一种基于unity3d游戏中npc播放随机台词的方法。

2、本发明采用以下技术方案:

3、一种基于unity3d游戏中npc播放随机台词的方法,包括如下步骤:

4、s1、分别配置台词组和台词;

5、s2、游戏启动时,通过单位台词管理器进行单个单位循环台词列表和台词组台词列表的初始化;其中,所述单个单位循环台词列表和台词组台词列表分别各自存储若干个台词类实例;

6、s3、单位台词管理器绑定秒更新函数,执行时遍历单个单位循环台词列表和台词组台词列表中的台词类实例,并调用实例的秒更新函数;

7、s4、若干个单位根据台词组中配置的内容,调用单位台词管理器,以使若干个单位进行台词的随机播放。

8、优选地,步骤s1中所述台词组配置的内容包括播放概率、台词间隔、初始延迟和每次说话的单位个数;所述播放概率为每次冷却时间结束后播放台词的概率;所述台词间隔为每次播放台词的时间间隔,时间间隔为固定时间或区间内的随机时间;所述初始延迟为当台词组初始化完成后,延迟一段时间开始工作;所述每次说话的单位个数为每次播放台词时从归属该台词组中随机挑选的单位的数量。

9、优选地,步骤s1中所述台词配置的内容包括所属台词组、权重、台词类型、文本、图片气泡、持续时间和播放条件;所述所属台词组为指定台词组的归属;所述权重为随机播放时的权重值;所述台词类型为文本或图片;所述文本为台词的内容;所述图片气泡为图片台词的配置引用,用于读取图片台词的图片路径和缩放用来显示图片;所述持续时间为单句台词的持续时间;所述播放条件为台词进入台词组的随机选项中的条件。

10、优选地,步骤s3包括如下步骤:

11、s31、在游戏的全局秒更新函数中,调用单位台词管理器中的秒调用函数onsecupdate;

12、s32、在秒调用函数onsecupdate中,分别对单个单位循环台词列表和台词组台词列表进行遍历,获取两个列表中各自的台词类实例;

13、s33、调用每个台词类实例的gettalkercount方法,判断该台词类实例中的单个单位循环台词列表里是否有需要进行播放台词的单位,若有,则调用该台词类实例的秒调用函数onsecupdate。

14、优选地,步骤s33中所述秒调用函数onsecupdate执行以下步骤:

15、s331、台词类实例记录一个时间,每次秒调用时该记录的时间加1秒,当记录的时间超过缓冲时间时,则该台词类实例进行一次台词的演播;

16、s332、遍历一次talker列表,判断其中是否有单位已经被销毁,如果被销毁了,则会将被销毁的单位移除出talker列表,用于使无效单位不参与台词播放,实现单位筛选;

17、s333、单位筛选后,如果还有可以播放台词的单位,则会调用台词类实例中的talk()方法,并重置记录的时间为0,再调用randomtalkintervaltime随机获取下一次播放台词的缓冲时间。

18、优选地,步骤s333中所述talk()方法为:根据台词组配置的播放概率,判断本次是否会播放台词;若判定本次进行台词的播放,调用成员方法randomtalkercount;根据配置获取一个随机的播放台词单位的数量,再根据对应的数量调用randomtalker从talker单位列表中随机获取该数量的单位,如果本次随机的数量超过了所有单位的数量,则取出所有的单位;根据台词组的配置中,获取符合播放条件的台词,根据配置的权重,选取出本次本单位播放的台词配置,进行数据组装,调用单位的showbubble方法,在游戏中进行展示。

19、优选地,步骤s4中单个单位根据台词组中配置的内容,调用单位台词管理器中的addsinglelooptalker(unit,group,isonly)方法,在单个单位循环台词列表创建归属于指定单位的台词类实例,并对单位创建不同台词组的台词类实例,以使单个单位在多个台词组的台词中进行随机播放。

20、优选地,步骤s4中多个单位根据台词组中配置的内容,调用单位台词管理器中的addgrouptalker(group,talker)方法,首先判断是否已有对应台词组的台词类实例,若没有,则创建一个台词类实例,然后将指定单位添加到该台词类实例的单位列表中,以使得多个单位可以在一个台词组的台词中进行随机播放,单位之间具有耦合性,若指定播放台词的单位数量小于单位列表中的单位数量,则会随机指定数量的单位进行台词播放;

21、优选地,步骤s4中,当某处需要一个单位添加到某个台词组中时,调用单位台词管理器中的addgrouptalker(group,talker)方法,判断是否已有台词组的台词类实例,若没有,则创建一个台词类实例,再将指定单位添加到台词组中;当游戏中需要将单位移除出某个台词组时,则调用单位台词管理器中的removegrouptalker(group,talker)方法,将该单位移除出台词组的台词类实例;当游戏中需要直接移除某个台词类实例时,则调用单位台词管理器中的removeagrouptalk(group)方法,从台词组台词列表中销毁对应台词类实例。

22、采用上述技术方案后,本发明与背景技术相比,具有如下优点:本发明使用秒更新函数来进行台词组冷却时间的计算,而不是使用定时器,减少定时器的使用,性能更好,不需要对定时器进行移除,减少内存泄漏的可能性。使用台词组的类实例进行同一台词组下单位的管理,不需要关心单位自身的移除,耦合性较低。加入台词播放条件、台词播放概率、台词播放初始延时、随机播放间隔、随机播放单位个数等要素,在不使用ai的情况下能够给台词播放带来比较大的随机性,使表现上更加随机、丰富、不机械,场景中的表现能更加灵动。同样的逻辑能够用在单一单位上,可减少开发成本。



技术特征:

1.一种基于unity3d游戏中npc播放随机台词的方法,其特征在于:包括如下步骤:

2.如权利要求1所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于:步骤s1中所述台词组配置的内容包括播放概率、台词间隔、初始延迟和每次说话的单位个数;所述播放概率为每次冷却时间结束后播放台词的概率;所述台词间隔为每次播放台词的时间间隔,时间间隔为固定时间或区间内的随机时间;所述初始延迟为当台词组初始化完成后,延迟一段时间开始工作;所述每次说话的单位个数为每次播放台词时从归属该台词组中随机挑选的单位的数量。

3.如权利要求1所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于:步骤s1中所述台词配置的内容包括所属台词组、权重、台词类型、文本、图片气泡、持续时间和播放条件;所述所属台词组为指定台词组的归属;所述权重为随机播放时的权重值;所述台词类型为文本或图片;所述文本为台词的内容;所述图片气泡为图片台词的配置引用,用于读取图片台词的图片路径和缩放用来显示图片;所述持续时间为单句台词的持续时间;所述播放条件为台词进入台词组的随机选项中的条件。

4.如权利要求1所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于,步骤s3包括如下步骤:

5.如权利要求4所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于,步骤s33中所述秒调用函数onsecupdate执行以下步骤:

6.如权利要求5所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于,步骤s333中所述talk()方法为:根据台词组配置的播放概率,判断本次是否会播放台词;若判定本次进行台词的播放,调用成员方法randomtalkercount;根据配置获取一个随机的播放台词单位的数量,再根据对应的数量调用randomtalker从talker单位列表中随机获取该数量的单位,如果本次随机的数量超过了所有单位的数量,则取出所有的单位;根据台词组的配置中,获取符合播放条件的台词,根据配置的权重,选取出本次本单位播放的台词配置,进行数据组装,调用单位的showbubble方法,在游戏中进行展示。

7.如权利要求1所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于,步骤s4中单个单位根据台词组中配置的内容,调用单位台词管理器中的addsinglelooptalker(unit,group,isonly)方法,在单个单位循环台词列表创建归属于指定单位的台词类实例,并对单位创建不同台词组的台词类实例,以使单个单位在多个台词组的台词中进行随机播放。

8.如权利要求1所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于,步骤s4中多个单位根据台词组中配置的内容,调用单位台词管理器中的addgrouptalker(group,talker)方法,首先判断是否已有对应台词组的台词类实例,若没有,则创建一个台词类实例,然后将指定单位添加到该台词类实例的单位列表中,以使得多个单位可以在一个台词组的台词中进行随机播放,单位之间具有耦合性,若指定播放台词的单位数量小于单位列表中的单位数量,则会随机指定数量的单位进行台词播放。

9.如权利要求1所述的一种基于unity3d游戏中npc播放随机台词的方法,其特征在于:步骤s4中,当某处需要一个单位添加到某个台词组中时,调用单位台词管理器中的addgrouptalker(group,talker)方法,判断是否已有台词组的台词类实例,若没有,则创建一个台词类实例,再将指定单位添加到台词组中;当游戏中需要将单位移除出某个台词组时,则调用单位台词管理器中的removegrouptalker(group,talker)方法,将该单位移除出台词组的台词类实例;当游戏中需要直接移除某个台词类实例时,则调用单位台词管理器中的removeagrouptalk(group)方法,从台词组台词列表中销毁对应台词类实例。


技术总结
本发明公开了一种基于Unity3D游戏中NPC播放随机台词的方法,包括如下步骤:S1、分别配置台词组和台词;S2、游戏启动时,通过单位台词管理器进行单个单位循环台词列表和台词组台词列表的初始化;其中,所述单个单位循环台词列表和台词组台词列表分别各自存储若干个台词类实例;S3、单位台词管理器绑定秒更新函数,执行时遍历单个单位循环台词列表和台词组台词列表中的台词类实例,并调用实例的秒更新函数;S4、若干个单位根据台词组中配置的内容,调用单位台词管理器,以使若干个单位进行台词的随机播放。

技术研发人员:许可
受保护的技术使用者:厦门极致互动网络技术股份有限公司
技术研发日:
技术公布日:2024/3/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1