【技术领域】
[0001] 本
发明涉及技术计算机领域,尤其涉及一种聊天功能开发方法及系统、终端和计算机可读存储介质。【背景技术】
[0002] 目前,随着智能手机的普及,手机应用和游戏开发兴起。游戏开发中,部分逻辑使用Cocos和Unity技术,其中,Cocos是一个开源
框架,用于构建游戏、应用程序和其他图形界面交互应用,Unity是一个让玩家轻松创建诸如三维视频游戏、建筑
可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具。而对于游戏中的聊天功能,目前市面的游戏是直接利用Cocos技术来实现。
[0003] 然而,Cocos和Unity技术实现的聊天功能,具有浏览消息和输入消息易出现卡顿的问题,使游戏玩家体验不佳。
[0004] 因此,如何使游戏中的聊天功能更为优化,成为目前亟待解决的技术问题。【发明内容】
[0005] 本发明
实施例提供了一种聊天功能开发方法及系统、终端和计算机可读存储介质,旨在解决相关技术中Cocos和Unity技术实现的聊天功能使游戏玩家体验不佳的技术问题,能够使游戏中的聊天功能更为优化,提升游戏用户体验。
[0006] 第一方面,本发明实施例提供了一种聊天功能开发方法,包括:在使用Cocos框架和/或Unity开发工具开发游戏的过程中,确定应用所述游戏的
操作系统的类型,其中,所述类型包括Android和iOS;根据所述操作系统的类型,选择对应的聊天功能开发策略,其中,所述聊天功能开发策略在所述操作系统的开发语言文件中
声明C++函数。
[0007] 在本发明上述实施例中,可选地,所述根据所述操作系统的类型,选择对应的聊天功能开发策略的步骤,包括:当确定所述操作系统的类型为所述Android的情况下,应用第一聊天功能开发策略;当确定所述操作系统的类型为所述iOS的情况下,应用第二聊天功能开发策略。
[0008] 在本发明上述实施例中,可选地,所述第一聊天功能开发策略包括:对声明有所述C++函数的Java源文件进行编译,得到.class格式的Java文件;通过javah命令导出Java本地
接口的头文件,其中,所述头文件的后缀是.h格式;用C++语言实现所述C++函数;通过所述Java本地接口的所述头文件,使用Java代码调用所述C++语言实现后的所述C++函数。
[0009] 在本发明上述实施例中,可选地,所述第二聊天功能开发策略包括:在Objective-C语言里创建原生类,得到后缀为h的第一文件和后缀为m的第二文件;将所述第二文件的后缀
修改为mm;在所述第一文件中声明C++函数;在修改后的所述第二文件内,通过所述Objective-C语言实现所述C++函数;通过C++语言调用所述Objective-C语言实现的所述C++函数。
[0010] 第二方面,本发明实施例提供了一种聊天功能开发系统,包括:操作系统类型确定单元,用于在使用Cocos框架和/或Unity开发工具开发游戏的过程中,确定应用所述游戏的操作系统的类型,其中,所述类型包括Android和iOS;聊天功能开发单元,用于根据所述操作系统的类型,选择对应的聊天功能开发策略,其中,所述聊天功能开发策略在所述操作系统的开发语言文件中声明C++函数。
[0011] 在本发明上述实施例中,可选地,所述聊天功能开发单元包括:第一开发单元,用于当确定所述操作系统的类型为所述Android的情况下,应用第一聊天功能开发策略;第二开发单元,用于当确定所述操作系统的类型为所述iOS的情况下,应用第二聊天功能开发策略。
[0012] 在本发明上述实施例中,可选地,第一开发单元具体用于:对声明有所述C++函数的Java源文件进行编译,得到.class格式的Java文件;通过javah命令导出Java本地接口的头文件,其中,所述头文件的后缀是.h格式;用C++语言实现所述C++函数;通过所述Java本地接口的所述头文件,使用Java代码调用所述C++语言实现后的所述C++函数。
[0013] 在本发明上述实施例中,可选地,第二开发单元具体用于:在Objective-C语言里创建原生类,得到后缀为h的第一文件和后缀为m的第二文件;将所述第二文件的后缀修改为mm;在所述第一文件中声明C++函数;在修改后的所述第二文件内,通过所述Objective-C语言实现所述C++函数;通过C++语言调用所述Objective-C语言实现的所述C++函数。
[0014] 第三方面,本发明实施例提供了一种终端,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的
存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行上述第一方面中任一项所述的方法。
[0015] 第四方面,本发明实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述第一方面中任一项所述的方法流程。
[0016] 通过以上技术方案,针对相关技术中的Cocos和Unity技术实现的聊天功能使游戏玩家体验不佳的技术问题,能够使游戏中的聊天功能更为优化。具体来说,由于Android操作系统和iOS操作系统中应用和游戏的开发语言完全不一样,可以为两者应用不同的聊天功能开发方式,由于Android操作系统和iOS操作系统中的原生聊天功能比Cocos技术实现的聊天功能要更为高效快捷,故可以将Android操作系统和iOS操作系统中的原生聊天功能用于游戏内的聊天功能的开发。
[0017] 然而,Android操作系统使用Java和Kotlin作为开发语言,iOS使用Objective-C和Swift作为开发语言,而Cocos和Unity技术中使用的开发语言是C++语言和C#语言,C#语言又是继承于C++语言,可调用C++编写的本机原生函数。故想要实现将Android操作系统和iOS操作系统中的原生聊天功能用于游戏内的聊天功能的开发,则需要实现Android操作系统和iOS操作系统的开发语言与应用于Cocos和Unity技术的C++语言的转换互通。
[0018] 其中,Kotlin是一个用于现代多平台应用的静态编程语言,可编译成Java字节码,因此,可将Android操作系统视为通用Java开发语言,通过在Java开发语言文件中声明C++函数,以实现Java开发语言与C++开发语言的互通,从而便于将Android操作系统的原生聊天功能应用于游戏应用中。
[0019] 同样,由于Swift可与Objective-C共同运行于iOS操作系统中,用于搭建基于iOS操作系统的应用程序,它采用了Objective-C的命名参数以及动态对象模型,可以无缝对接到现有的Cocoa框架,并且可以兼容Objective-C代码,故可将iOS操作系统视为通用Objective-C开发语言。故可在Objective-C开发语言文件中声明C++函数,以实现Objective-C开发语言与C++开发语言的互通,从而便于将iOS操作系统的原生聊天功能应用于游戏应用中。
[0020] 通过以上技术方案,实现了将Android操作系统和iOS操作系统中的原生聊天功能用于游戏内的聊天功能,解决了C++、C#、Java、Objective-C间的跨语言开发问题,降低了跨语言开发的难度,便于集成多种开发语言的优势,增加了游戏中聊天功能的实用性和便捷性,提升了用户在游戏过程中使用聊天功能的用户体验。【
附图说明】
[0021] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0022] 图1示出了本发明的一个实施例的聊天功能开发方法的
流程图;
[0023] 图2示出了本发明的一个实施例的Android操作系统中聊天功能开发方法的流程图;
[0024] 图3示出了本发明的一个实施例的iOS操作系统中聊天功能开发方法的流程图;
[0025] 图4示出了本发明的一个实施例的聊天功能开发系统的
框图;
[0026] 图5示出了本发明的一个实施例的终端的框图。【具体实施方式】
[0027] 为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
[0028] 应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0029] 在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附
权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
[0030] 图1示出了本发明的一个实施例的聊天功能开发方法的流程图。
[0031] 如图1所示,本发明实施例提供了一种聊天功能开发方法,包括:
[0032] 步骤102,在使用Cocos框架和/或Unity开发工具开发游戏的过程中,确定应用所述游戏的操作系统的类型,其中,所述类型包括Android和iOS。
[0033] 步骤104,根据所述操作系统的类型,选择对应的聊天功能开发策略,其中,所述聊天功能开发策略在所述操作系统的开发语言文件中声明C++函数。
[0034] 其中,当确定所述操作系统的类型为所述Android的情况下,应用第一聊天功能开发策略;当确定所述操作系统的类型为所述iOS的情况下,应用第二聊天功能开发策略。
[0035] 由于Android操作系统和iOS操作系统中应用和游戏的开发语言完全不一样,可以为两者应用不同的聊天功能开发方式,由于Android操作系统和iOS操作系统中的原生聊天功能比Cocos技术实现的聊天功能要更为高效快捷,故可以将Android操作系统和iOS操作系统中的原生聊天功能用于游戏内的聊天功能的开发。
[0036] 然而,Android操作系统使用Java和Kotlin作为开发语言,iOS使用Objective-C和Swift作为开发语言,而Cocos和Unity技术中使用的开发语言是C++语言和C#语言,C#语言又是继承于C++语言,可调用C++编写的本机原生函数。故想要实现将Android操作系统和iOS操作系统中的原生聊天功能用于游戏内的聊天功能的开发,则需要实现Android操作系统和iOS操作系统的开发语言与应用于Cocos和Unity技术的C++语言的转换互通。
[0037] 其中,Kotlin是一个用于现代多平台应用的静态编程语言,可编译成Java字节码,因此,可将Android操作系统视为通用Java开发语言,通过在Java开发语言文件中声明C++函数,以实现Java开发语言与C++开发语言的互通,从而便于将Android操作系统的原生聊天功能应用于游戏应用中。
[0038] 同样,由于Swift可与Objective-C共同运行于iOS操作系统中,用于搭建基于iOS操作系统的应用程序,它采用了Objective-C的命名参数以及动态对象模型,可以无缝对接到现有的Cocoa框架,并且可以兼容Objective-C代码,故可将iOS操作系统视为通用Objective-C开发语言。故可在Objective-C开发语言文件中声明C++函数,以实现Objective-C开发语言与C++开发语言的互通,从而便于将iOS操作系统的原生聊天功能应用于游戏应用中。
[0039] 通过以上技术方案,实现了将Android操作系统和iOS操作系统中的原生聊天功能用于游戏内的聊天功能,解决了C++、C#、Java、Objective-C间的跨语言开发问题,降低了跨语言开发的难度,便于集成多种开发语言的优势,增加了游戏中聊天功能的实用性和便捷性,提升了用户在游戏过程中使用聊天功能的用户体验。
[0040] 下面通过图2和图3的实施例分别介绍第一聊天功能开发策略和第二聊天功能开发策略的具体内容。
[0041] 图2示出了本发明的一个实施例的Android操作系统中聊天功能开发方法的流程图。
[0042] 如图2所示,该方法包括:
[0043] 步骤202,对声明有所述C++函数的Java源文件进行编译,得到.class格式的Java文件。
[0044] 其中,.class格式的Java文件全名称为Java class文件,主要在平台无关性和网络移动性方面使Java更适合网络,它在平台无关性方面的任务是为Java程序提供独立于底层主机平台的二进制形式的服务。该文件打破了C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专
门支持特定
硬件平台和操作系统的二进制文件
[0045] 步骤204,通过javah命令导出Java本地接口的头文件,其中,所述头文件的后缀是.h格式。
[0046] Java本地接口(Java Native Interface)就是指用C和C++开发的接口,它允许Java代码和其他语言写的代码进行交互。另外,在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件则用于保存程序的实现。其中,.h为头文件的一种格式。
[0047] 因此,通过javah命令导出的Java本地接口的头文件,能够为下述步骤中Java代码与C++语言的交互提供有效途径。
[0048] 步骤206,用C++语言实现所述C++函数。
[0049] 步骤208,通过所述Java本地接口的所述头文件,使用Java代码调用所述C++语言实现后的所述C++函数。
[0050] Android操作系统使用Java和Kotlin作为开发语言,而Cocos和Unity技术中使用的开发语言是C++语言和C#语言,C#语言又是继承于C++语言,可调用C++编写的本机原生函数。故想要实现将Android操作系统的原生聊天功能用于游戏内的聊天功能的开发,则需要实现Android操作系统的开发语言与应用于Cocos和Unity技术的C++语言的转换互通。
[0051] 而通过上述步骤,在Java开发语言文件中声明C++函数,以实现Java开发语言与C++开发语言的互通,从而便于将Android操作系统的原生聊天功能应用于游戏应用中。
[0052] 图3示出了本发明的一个实施例的iOS操作系统中聊天功能开发方法的流程图。
[0053] 如图3所示,该方法包括:
[0054] 步骤302,在Objective-C语言里创建原生类,得到后缀为h的第一文件和后缀为m的第二文件。
[0055] 其中,原生类是指Java中,数据类型分为基本数据类型(或叫做原生类、内置类型)和引用数据类型,其中,后缀h表示头文件,用来声明各种成员变量、方法、属性等,后缀m主要用来实现头文件里声明的方法。
[0056] 步骤304,将所述第二文件的后缀修改为mm。
[0057] 后缀mm的文件为实现文件,和后缀m的文件类似,唯一的不同点就是,除了可以包含Objective-C和C代码以外,还可以包含C++代码,仅在Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名。因此,此步骤中扩展名的更改为Objective-C代码与C++代码的转换互通提供了条件。
[0058] 步骤306,在所述第一文件中声明C++函数。
[0059] 步骤308,在修改后的所述第二文件内,通过所述Objective-C语言实现所述C++函数。
[0060] 步骤310,通过C++语言调用所述Objective-C语言实现的所述C++函数。
[0061] 可将iOS操作系统视为通用Objective-C开发语言,在Objective-C开发语言文件中声明C++函数,可实现Objective-C开发语言与C++开发语言的互通,从而便于将iOS操作系统的原生聊天功能应用于游戏应用中。
[0062] 图4示出了本发明的一个实施例的聊天功能开发系统的框图。
[0063] 如图4所示,本发明实施例提供了一种聊天功能开发系统400,包括:操作系统类型确定单元402,用于在使用Cocos框架和/或Unity开发工具开发游戏的过程中,确定应用所述游戏的操作系统的类型,其中,所述类型包括Android和iOS;聊天功能开发单元404,用于根据所述操作系统的类型,选择对应的聊天功能开发策略,其中,所述聊天功能开发策略在所述操作系统的开发语言文件中声明C++函数。
[0064] 该聊天功能开发系统400使用图1至图3示出的实施例中任一项所述的方案,因此,具有上述所有技术效果,在此不再赘述。聊天功能开发系统400还具有以下技术特征:
[0065] 在本发明上述实施例中,可选地,所述聊天功能开发单元404包括:第一开发单元,用于当确定所述操作系统的类型为所述Android的情况下,应用第一聊天功能开发策略;第二开发单元,用于当确定所述操作系统的类型为所述iOS的情况下,应用第二聊天功能开发策略。
[0066] 在本发明上述实施例中,可选地,第一开发单元具体用于:对声明有所述C++函数的Java源文件进行编译,得到.class格式的Java文件;通过javah命令导出Java本地接口的头文件,其中,所述头文件的后缀是.h格式;用C++语言实现所述C++函数;通过所述Java本地接口的所述头文件,使用Java代码调用所述C++语言实现后的所述C++函数。
[0067] 在本发明上述实施例中,可选地,第二开发单元具体用于:在Objective-C语言里创建原生类,得到后缀为h的第一文件和后缀为m的第二文件;将所述第二文件的后缀修改为mm;在所述第一文件中声明C++函数;在修改后的所述第二文件内,通过所述Objective-C语言实现所述C++函数;通过C++语言调用所述Objective-C语言实现的所述C++函数。
[0068] 图5示出了本发明的一个实施例的终端的框图。
[0069] 如图5所示,本发明的一个实施例的终端500,包括至少一个存储器502;以及,与所述至少一个存储器502通信连接的处理器504;其中,所述存储器存储有可被所述至少一个处理器504执行的指令,所述指令被设置为用于执行上述图1和图2实施例中任一项所述的方案。因此,该终端500具有和图1至图3实施例中任一项相同的技术效果,在此不再赘述。
[0070] 另外,本发明实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述图1至图3实施例中任一项所述的方法流程。
[0071] 以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,实现了将Android操作系统和iOS操作系统中的原生聊天功能用于游戏内的聊天功能,解决了C++、C#、Java、Objective-C间的跨语言开发问题,降低了跨语言开发的难度,便于集成多种开发语言的优势,增加了游戏中聊天功能的实用性和便捷性,提升了用户在游戏过程中使用聊天功能的用户体验。
[0072] 应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0073] 应当理解,尽管在本发明实施例中可能采用术语第一、第二等来描述聊天功能开发策略,但这些聊天功能开发策略不应限于这些术语。这些术语仅用来将聊天功能开发策略彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一聊天功能开发策略也可以被称为第二聊天功能开发策略,类似地,第二聊天功能开发策略也可以被称为第一聊天功能开发策略。
[0074] 取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
[0075] 需要说明的是,本发明实施例中所涉及的终端可以包括但不限于个人计算机(PersonalComputer,PC)、
个人数字助理(PersonalDigitalAssistant,PDA)、无线
手持设备、
平板电脑(TabletComputer)、手机、MP3播放器、MP4播放器等。
[0076] 在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0077] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加
软件功能单元的形式实现。
[0078] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,
服务器,或者网络装置等)或处理器(Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动
硬盘、
只读存储器(Read-OnlyMemory,ROM)、
随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0079] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。