提交示例代码

This commit is contained in:
Bob.Song
2026-03-05 11:39:06 +08:00
commit 25958f58c3
2534 changed files with 209593 additions and 0 deletions

View File

@@ -0,0 +1,107 @@
using System.Collections;
using System.Collections.Generic;
using Fantasy;
using Fantasy.Async;
using Fantasy.ConfigTable;
using Fantasy.Network;
using UnityEngine;
using UnityEngine.UI;
using ErrorCode = UnityEditor.PackageManager.ErrorCode;
public class Entry : MonoBehaviour
{
private Scene _scene;
private Session _session;
public Button GameInitCompleteButton;
public Button StartCreateItemButton;
public Button UseItemButton;
public InputField UseItemId;
void Start()
{
StartAsync().Coroutine();
}
private async FTask StartAsync()
{
// 第一个参数,主要是为了兼容不容包管理器的路径
// Yoo、Addressable
// 路径 + 包名字 = 完整的路径
// Assets/Bundles/Config + Config.bytes = Assets/Bundles/Config/Config.bytes
ConfigTableHelper.Initialize("Assets/Bundles/Config", new AssetsBundleManager());
// 初始化框架
await Fantasy.Platform.Unity.Entry.Initialize(GetType().Assembly);
// 创建一个Scene这个Scene代表一个客户端的场景客户端的所有逻辑都可以写这里
// 如果有自己的框架也可以就单纯拿这个Scene做网络通讯也没问题。
_scene = await Scene.Create(SceneRuntimeType.MainThread);
// 用当前的Scene创建一个新的网络连接
_session = _scene.Connect(
"127.0.0.1:20000",
NetworkProtocolType.KCP,
OnConnectComplete,
OnConnectFail,
OnConnectDisconnect,
false, 5000);
var response = (G2C_LoginResponse)await _session.Call(new C2G_LoginRequest()
{
UserName = "Fantasy6666",PassWord = "666"
});
if (response.ErrorCode != 0)
{
Log.Error($"登陆失败,错误码 = {response.ErrorCode}");
return;
}
Log.Debug("收到G2C_TestResponse UserName:\"Fantasy\"");
GameInitCompleteButton.onClick.AddListener(() => OnGameInitCompleteButton().Coroutine());
StartCreateItemButton.onClick.AddListener(OnStartCreateItemButton);
UseItemButton.onClick.AddListener(() => OnUseItemButton().Coroutine());
}
private async FTask OnUseItemButton()
{
var itemId = long.Parse(UseItemId.text);
var response = await _session.Call(new C2G_UseItemRequest()
{
ItemId = itemId, Count = 1, ContainerType = 1
});
if (response.ErrorCode != 0)
{
Log.Error($"无法使用物品 ErrorCode:{response.ErrorCode}");
}
}
private async FTask OnGameInitCompleteButton()
{
var response = await _session.Call(new C2G_GameInitCompleteRequest()
{
PushContainer = true
});
if (response.ErrorCode != 0)
{
Log.Error($"无法跟服务器建立连接 ErrorCode:{response.ErrorCode}");
}
}
private void OnStartCreateItemButton()
{
_session.Send(new C2G_StartCreateItem());
}
private void OnConnectComplete()
{
Log.Debug("OnConnectComplete");
_session.AddComponent<SessionHeartbeatComponent>().Start(ConstValue.Heartbeat);
}
private void OnConnectFail()
{
Log.Debug("OnConnectFail");
}
private void OnConnectDisconnect()
{
Log.Debug("OnConnectDisconnect");
}
}