MathchVS 文档中心 > 对战引擎 > u3d/android > 接入文档
来源:互联网 发布:域名301跳转会报毒么 编辑:程序博客网 时间:2024/05/21 22:43
一、下载和安装U3D插件
1、下载SDK和运行的API demo
下载SDK解压后打开sample\MatchVSDemo-Unity3D\Assets\MatchVSDemo.unity文件(需安装Unity3D),通过Unity编辑器的菜单Edit->Play(ctrl+p)运行 如下:
可通过Conslole查看运行日志.通过浏览DEMO了解MatchVS的基本功能。
2、运行U3D MatchVS 网络对战游戏Demo(暂未推出)
3、使用MatchVS的U3D插件打开Unity.exe编辑器(新建一个U3D工程或在已有U3D工程上) 通过 Assets ->Import Package->Custom Package 导入下载的插件MatchVS-U3D.unitypackage
4、导入MatchVS-U3D.unitypackage后在U3D工程目录的/Assets/Plugins文件下会出现Android 平台的so,window平台的dll,iOS平台bundle,在Assets/MatchVS下会出现MatchVS的C#接口文件.通过这些接口开发Unity网络对战游戏。
二、调试
通过Unity编辑器调试 如果遇到consle输出错误
Exception: JNI: Init'd AndroidJavaClass with null ptr!
UnityEngine.AndroidJavaClass..ctor (IntPtr jclass) (at C:/buildslave/unity/build/Runtime/Export/AndroidJavaImpl.cs:556)
UnityEngine.AndroidJavaObject.get_JavaLangClass () (at C:/buildslave/unity/build/Runtime/Export/AndroidJavaImpl.cs:534)
请通过Unity编辑器的菜单File->Build Settings(ctrl+shift+B)选择Switch Platfrom为PC,Mac&Linux.
因为这里使用android平台特有的JNI特性.
三、发布
- Window
通过Unity编辑器的菜单File->Build Settings(ctrl+shift+B)选择Switch Platfrom为PC,Mac&Linux,点击Build或者Build And Run 保存为xxxx.exe文件(xxxx应该替换成实际的项目名)
发布成功后会出现xxxx.exe文件和 xxxx_Data目录即为发布成功
Tips : Window平台运行时报如下错误,DllnotFoundException:..\xxxx_Data\Plugins\MatchSDK.dll
请将 ..\xxxx_Data\Plugins\ 下的
libevent_core-2-0-5.dll
libevent_extra-2-0-5.dll
libevent-2-0-5.dll
pthread.dll
拷贝至..\目录下(..\代表xxxx.exe所在目录)
Android
通过Unity编辑器的菜单File->Build Settings(ctrl+shift+B)选择Switch Platfrom为Android点击Build或者Build And Run
详细配置请参考Unity Android打包官方教程
如果遇到打包后的APK运行崩溃 并出现如下LOG信息
Invalid serialized file version. File: Expected version: 5.3.3f1. Actual version: 5.3.4f1.
请保持unity3D编辑器和android打包插件(UnitySetup-Android-Support-for-Editor-xxxx.exe)的版本一致(卸载重装unity) 重新打包即可
- tips:
默认Android是正式环境,win为测试1环境.因服务器不同,用户不能相互连接,android与win不能相互通信.
解决方法: 在C#调用初始化接口时使用如下配置 切换到正式环境.使得android与win互通.(建议在win平台测试通过后再切换到正式环境)
MatchVSEngine.getInstance().init(null, MatchVSEngineConfigBuilder.getDefault().setMode(0));
四、对战-接口调用流程图
五、对战-接口说明
public interface IMatchVSEngineListener;
以下为接口用于接收来自引擎功能调用后的反馈.
游戏登录
/**
* 登录大厅结果通知
*
* @param ko_lobby_login_rsp_t
*/
void onEnterLobbyRsp(int responseCode);
游戏开始通知
/**
* 游戏开始
*/
void onGameStart(long pRoundID);
更换房主通知
/**
* 房主更换
*
* @param userid 房主ID
*/
void onRoomMasterChanged(int pMasterUserID);
进入房间通知
/**
* 进入房间
* @param 进入房间结果码 小于0为失败,大于0为进入的房间ID
*/
void onEnterRoom(int pRet);
房间成员动态变化通知
/**
* 当前房间动态,房间用户变化
*
* @param pUserID 用户ID
* @param pStatus
*
*/
void onRoomUsersChanged(MatchVSRoomUserState[] pMatchVSRoomUserStates);
房间延迟通知
/**
* 当前房间延迟情况
* @param pMatchVSRoomUserStates 房间每个用户的延迟
*/
void onRoomDelay(MatchVSRoomDelay[] pMatchVSRoomDelay);
游戏结束通知
/**
* 游戏结束 表示游戏已经结束
* @param pScore 空的数据 游戏结果以OnGameResult为准
*/
void onGameOver(MatchVSScore[] pScore);
游戏结果通知
/**
* 游戏结果通知
* @param pScores 所有玩家的游戏对战结果
*/
void onGameResult(int pResultCode, MatchVSScore[] pScores, String pMessage);
接收用户数据通知
/**
* 接收用户数据
*
* @param userid 发送数据的玩家UserID
* @param pData 数据
*/
void onDataReceived(int pUserid, byte[] pData);
引擎异常通知
/**
* 引擎所有异常和错误回调
* @param pErrorCode 错误码
* @param pMessage 错误信息
*/
void onError(int pErrorCode);
退出大厅通知
/**
* 退出大厅成功
*/
void onExitLobby();
MatchVSEngine类说明
对战引擎的所提供的所有功能都通过下列方法实现.
/**
*获得引擎实例
*@return 引擎实例
*//
Public static MatchVSEngine.getinstance();
注册对战引擎监听
/**
*注册对战引擎监听
*@param pListener 监听对象
*//
Public void addMatchVSEngineListener;
反注册对战引擎
/**
*反注册对战引擎监听
*@param pListener 监听对象
*//
Public void removeMatchVSEngineListener;
初始化SDK
/**
* 初始化SDK
*
* @param pApplication
*
* @return
* @throws IllegalAccessException
*/
public bool init(Application pApplication)
进入游戏大厅
/**
* 用户进入大厅和登录游戏授权
*
* @param pDevelopID
* @param pUserID
* @param pGameID
* @param pGameVersion
* @param pToken
* @
*/
public void enterLobby(int pDevelopID, int pUserID, int pGameID, int pGameVersion, String pToken)
退出大厅
/**
* 退出大厅
*
* @return
* @
* @throws NotEntryLobbyException
*/
public void exitLobby()
是否已经初始化
/**
* 是否已经初始化SDK
*
* @return
*/
public bool isInit()
是否已经进入大厅
/**
* 是否进入过大厅
*
* @return
*/
public bool isEnterLobby()
是否游戏中
/**
* 游戏是否开始
* @return
*/
public bool isGameStart()
房间成员准备状态
/**
* 是否其他成员已经准备
*
* @return
*/
public bool isRoomOtherUserReadyed()
传送数据
/**
* 发送数据给房间其他人
*
* @param pRoomUser
* 默认是所有人
* @param pData
* 数据
*/
public void sendData(MatchVSRoomUser pRoomUser, byte[] pData)
传送可靠数据
/**
* 发送数据给房间其他人(可靠,无丢包)
* @param pRoomUser 默认是所有人
* @param pData 数据
* @
*/
public void sendReliableData(MatchVSRoomUser pRoomUser, byte[] pData)
进入房间
/**
*进入某场次内的房间
*@param pRoomID 正数为指定进入房间,0为随机进入房间
*/
public void enterRoom(int pRoomID)
更换房间
/**
* 更换房间,在当前房间中重新进入另一个房间.随机匹配.
*/
public void changeRoom()
退出房间
/**
* 退出房间
*
* @param pRoomID
*/
public void exitRoom(int pRoomID)
准备游戏
/**
* 游戏准备. 多人游戏中房主后准备
*/
public void gameReady()
开始游戏
/**
* 游戏开始 v1.1
*/
public void gameStart()
取消准备
/**
* 取消准备 v1.1
*/
public void gameCancel()
游戏结束
/**
* 结束游戏.
*
* @param pScore
* 游戏得分,用于结算
*/
public void gameOver(MatchVSScore pScore)
反初始化引擎
/**
* 反初始化引擎
*/
public void uninit();
得到引擎状态
/**
* 得到引擎的状态
*
* @return
*/
public int getEngineState()
是否房主
/**
* 是否是房主
* @return
*/
public bool isRoomMaster()
获取房主ID
/**
* 获取房主用户ID
* @return
*/
public int getRoomMasterID()
得到用户对战信息
/**
* 获取用户对战信息
*
* @param pCallBack
* @param pUserID
*/
public void getUserDetail(int pUserID, MatchVSCallback<MatchVSBattleDetail> pCallBack)
登录结果
/**
*登录结果
*/
public void onLogin(int returnCode)
六、错误码
- MathchVS 文档中心 > 对战引擎 > u3d/android > 接入文档
- 文档中心 > 统计分析 > 统计分析Android文档 > 集成文档
- Bugly Android 快速接入使用文档
- Bugly Android 快速接入使用文档
- AIShare.framework接入文档
- share sdk 接入文档
- 3.服务器端接入文档
- ospf文档中心
- citrix中文文档中心
- 文档手册中心
- ThinkPHP文档中心
- 通联支付文档中心
- EIAC.SSO接入接口文档
- 电信 IP 网管接入文档
- Firebase Cloud Messaging接入文档
- 九麟SDK 接入文档
- 4.客户端端接入文档
- 钉钉平台接入文档
- solrJ笔记(1)
- RGB888转RGB565
- InterlliJ Gradle使用教程
- Python初体验之pip安装的依赖
- spring jpa 读写分离
- MathchVS 文档中心 > 对战引擎 > u3d/android > 接入文档
- 《黑客与画家》读书笔记
- [Sencha ExtJS & Touch] Sencha Cmd 多版本共存 (Mac OS X 和 Windows)
- RxJava
- eclipse插件启动Genymotion模拟器失败解决方案
- Android路上踩到的坑ing
- sql count执行速度测试
- 更详细版的log4j
- 牛逼的正则表达式(2)---python中的核心函数