最终,我找到了一种在 Unity3d 中使用 GameLiftClient 的方法。
先决条件:
- Windows 10
-
捷脑骑士 https://www.jetbrains.com/rider/, Visual Studio 也应该可以工作
- 将“UnityEngine.dll”放入 C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll
- 在 Unity3d 项目的项目设置中将“Scripting Runtime version”设置为“.net35 Equivalent”。
Step 1:下载 AWS SDK 源代码:Github https://github.com/aws/aws-sdk-net并将其解压缩到您喜欢的任何地方。
下载与您使用的 GameLift Server SDK 兼容的版本会更安全。
Step 2:
Open sdk/AWSSDK.Unity.sln
in 捷脑骑士 https://www.jetbrains.com/rider/。 Visual Studio 应该也可以工作,但我没有与该解决方案兼容的正确版本的 VS。
Step 3:在 Rider 的解决方案面板中,在“Services”下创建一个新的解决方案文件夹,并将其命名为“GameLift”。
右键单击“GameLift”文件夹并选择“添加现有项目”。在弹出窗口中,浏览并选择“sdk\src\Services\GameLift\AWSSDK.GameLift.Net35.csproj”。
现在解决方案应该如下所示:
Step 4:右键单击“AWSSDK.GameLift.Net35.csproj”并选择“编辑 AWSSDK.GameLift.Net35.csproj”
在 Rider 的编辑器面板中,更改<ProjectReference Include="..\..\Core\AWSSDK.Core.Net35.csproj"/>
to
<ProjectReference Include="..\..\Core\AWSSDK.Core.Unity.csproj">
<Project>{5A8B25C1-3D58-4BB6-BF7D-77AD818D9EAD}</Project>
<Name>AWSSDK.Core.Unity</Name>
</ProjectReference>
上面的 ProjectReferece 是从默认情况下包含在解决方案中的任何其他项目设置复制的。
不要忘记保存文件。
Step 5:右键单击“AWSSDK.GameLift.Net35.csproj”并选择“构建选定项目”。
Step 6:转到“sdk\src\Services\GameLift\bin\Debug\net35”或“sdk\src\Services\GameLift\bin\Release\net35”,将除“UnityEngnine.dll”之外的所有 dll 复制到 Unity3d 项目中。我将它们放在“资产/AWSSDK”下。
Step 7:使用以下内容创建“Assets/AWSSDK/src/Core/Resources/awsconfig.xml”:
<?xml version="1.0" encoding="utf-8"?>
<aws
region="us-west-1"
correctForClockSkew="true">
</aws>
Step 8:现在它应该能够使用以下代码片段创建 GameLiftClient:
Awake()
{
UnityInitializer.AttachToGameObject(gameObject);
AWSConfigs.HttpClient = AWSConfigs.HttpClientOption.UnityWebRequest;
AmazonGameLiftConfig gameLiftConfig = new AmazonGameLiftConfig
{
RegionEndpoint = RegionEndpoint.USWest1
};
m_Client = new AmazonGameLiftClient(
"awsAccessKeyId",
"awsSecretAccessKey",
gameLiftConfig);
}
不要忘记将“awsAccessKey”替换为真实的“awsAccessKey”。
此外,将 AWS 凭证硬编码到客户端也不安全。因此,请仅将此代码片段用于测试目的。出于生产目的,AWS Cognito 可用于在运行时分发 AWS 凭证。
全做完了。