# Unreal Engine 4

## 1. 建立UE4項目

1-1. 在啟動 UE4 Editor 的視窗中選擇 <mark style="color:orange;">Game</mark>，當 <mark style="color:orange;">Open Project</mark> 按鈕變更為 <mark style="color:orange;">Next</mark> 時，按 <mark style="color:orange;">Next</mark> 按鈕。

<figure><img src="/files/Q7FaMy3cFZrZUlF1sHup" alt=""><figcaption><p>運行UE4 Editor後出現的視窗</p></figcaption></figure>

#### 1-2. 在<mark style="color:orange;">範本選擇</mark>視窗中，選擇<mark style="color:orange;">基本</mark>，然後按一下<mark style="color:orange;">下一步</mark>。

<figure><img src="/files/geZbCKfFlc1gFDrEkIv9" alt=""><figcaption></figcaption></figure>

#### 1-3.  當您按一下<mark style="color:orange;">專案設定</mark>中的<mark style="color:orange;">藍圖</mark>按鈕時，該按鈕將展開為下拉清單。

<figure><img src="/files/0t3yRahrXGJ3i5yrC1n2" alt=""><figcaption></figcaption></figure>

#### 1-4. 從展開的下拉清單中，選擇 C++，如下面的螢幕截圖所示。

<figure><img src="/files/BcTpt8hXMNSxgSB5VK9j" alt=""><figcaption></figcaption></figure>

#### 1-5. 在下圖紅框所示的<mark style="color:orange;">專案路徑視窗</mark>和工程名稱視窗中輸入建立工程的路徑和要建立的工程名稱，點選<mark style="color:orange;">建立專案</mark>。

<figure><img src="/files/GP1Wp8lnYuwH9Vivx8xo" alt=""><figcaption></figcaption></figure>

#### 1-6. 專案建立完成後，Visual Studio IDE 和 UE4 編輯器將與建立的專案同時運作。

#### 1-7. 在 Visual Studio IDE 中，您必須指定配置和平台，如下所示，然後再繼續。

{% hint style="info" %}

* Solution Configuration : <mark style="color:orange;">Development Editor</mark>
* Solution Platform : <mark style="color:orange;">Win64</mark>
  {% endhint %}

## 2. 將 ProudNet 整合到您的 UE4 專案中

在<mark style="color:orange;">(專案名稱).build.cs</mark> 檔案中使用 C# 程式碼指定 ProudNet 程式庫和頭檔路徑。

> 1. 開啟cs文件，會出現UE4 Editor自動建立的一個同工程名稱的類別。 該類別目前只有一個建構函數。
> 2. 如果您查看建構函式的主體，您可以在末尾看到幾行註解。 註解後只需放置指定ProudNet庫和頭檔引用路徑的程式碼即可。
> 3. 若要指定 ProudNet 程式庫參考路徑，請將程式庫路徑字串傳遞給 <mark style="color:orange;">PublicAdditionalLibraries</mark> 物件的 Add 函數。\
>    例子: **> PublicAdditionalLibraries.Add("D:\ProudNet1.7.48971-master\ProudNet\lib\x64\v140\Release\ProudNetClient.lib")**
> 4. 若要指定 ProudNet 頭檔參考路徑，請將 ProudNet 包含資料夾的路徑傳遞給名為 <mark style="color:orange;">PublicIncludepaths</mark> 的全域物件的 Add 函數。\
>    例子: **> PublicIncludePaths.Add("D:\ProudNet1.7.48971-master\ProudNet)**
> 5. 由於與ProudNet整合的UE4專案必須是64位元建構的，因此將前面寫的兩個句子用大括號括起來，然後在上面加上一個if語句。
> 6. 建置 iOS 和 Android 時所需的 lib 檔案也是用 if 語句包裝後編寫的。

下面是一個刪除了註解的範例。

{% code overflow="wrap" lineNumbers="true" fullWidth="false" %}

```cpp
// Copyright Epic Games, Inc. All Rights Reserved.
 
using System.IO;
using UnrealBuildTool;
 
public class TestUnreal4 : ModuleRules
{
    public TestUnreal4(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
    
        PublicIncludePaths.AddRange(
	new string[] {
	    // ... add public include paths required here ...
	}
	);
				
		
	PrivateIncludePaths.AddRange(
	new string[] {
	    // ... add other private include paths required here ...
	}
	);
 
        if (Target.Platform == UnrealTargetPlatform.Win64)
        {
            // Add the import library
            PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\x64\v140\Release\ProudNetClient.lib");
        }
        else if (Target.Platform == UnrealTargetPlatform.IOS)
        {
            PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\x64\v140\Release\libProudNetClient.a");
            
            PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\x64\v140\Release\libiconv.2.tbd"));
        }
        else if(Target.Platform == UnrealTargetPlatform.Android)
        {
        PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\NDK\r20\cmake\clangRelease\arm64-v8a\libProudNetClient.a);
        }
        
         PublicIncludePaths.Add(@"D:\ProudNet1.7.48971-master\ProudNet\include");
    }
}
```

{% endcode %}

{% hint style="warning" %}
iOS 和 Android 使其引用 <mark style="color:orange;">ProudNet\lib\NDK\r20\cmake\clangDebug\arm64-v8a\libProudNetClient.a</mark> 而不是 <mark style="color:orange;">ProudNet\lib\x64\v140\Release\libProudNetClient.lib</mark>。
{% endhint %}

{% hint style="danger" %}
請不要設定上面範例程式碼的路徑，而是輸入Proudnet實際安裝的路徑。
{% endhint %}

<figure><img src="/files/TBQ9pg0OrxY9FLNj3M9i" alt=""><figcaption></figcaption></figure>

如上例，<mark style="color:orange;">CNetClient</mark>可以正常創建，不會出現編譯錯誤。

## 3. Android 建置

請參考以下連結。

{% hint style="success" %}
**參考**

[**Android 快速入門**](https://docs.unrealengine.com/5.3/ko/setting-up-unreal-engine-projects-for-android-development/)
{% endhint %}

## 4. iOS 建置

{% hint style="warning" %}
您也必須指定 <mark style="color:orange;">libiconv.2.tbd</mark> 函式庫的路徑。

如果不指定，建置時會出現 iconv 相關的連結錯誤。
{% endhint %}

<figure><img src="/files/caO9n452h46hPgQYuJH7" alt=""><figcaption></figcaption></figure>

請參考以下連結。

{% hint style="success" %}
**參考**

[**iOS 快速入門指南**](https://docs.unrealengine.com/5.3/ko/setting-up-an-unreal-engine-project-for-ios/)
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.proudnet.com/proudnet.cn/proudnet/2.setting/unreal-engine-4.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
