2017年4月16日 星期日

Unreal: How To Read Customized Configuration File

since: 2017/04/16
update: 2017/04/16
reference:
1. I touchs: Unreal: Create C++ Blueprint Function Library
2. How can I load text from file with blueprint? - UE4 AnswerHub
3. Newline character in UE4 – Bocil Mania
4. set array elem - UE4 AnswerHub


A. 新增專案
    1. 新增 BlueprintBlank 專案, 取名為: ReadConfigFile

    2. 新增 MapsData 資料夾:
        Maps 用來存放預設的關卡地圖; Data 用來放置 config.ini

    3. 新增一個檔名為 config.ini 的檔案, 內容如下:
# show debug information (1:true / 0:false)
debug=1

# remote IP (String)
remoteIP=192.168.1.1

# connect timeout (int)
timeout=10


說明: a. # 開頭為註解
         b. 變數名稱與變數值之間用 "=" 號連接, 且前後不可以有空白
         c. 此例有 3 行是變數的設定(之後需要在字串陣列變數指定此數量)


    4. 點選 Data 資料夾 > 滑鼠右鍵 > Show in Explorer

    5. 將剛剛的 config.ini 檔案 copy 進來

-----------------------------------------------------------------------------------------------

B. 新增 C++ Blueprint Function Library
    1. Add New > New C++ Class...

    2. 點選: Blueprint Function Library > Next

    3. Name: FileHelperFunction > Create Class
        > 自動開啟 visual studio 2015


    4. 修改 FileHelperFunction.h
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "Kismet/BlueprintFunctionLibrary.h"
#include "FileHelperFunction.generated.h"

/**
 *
 */
UCLASS()
class READCONFIGFILE_API UFileHelperFunction : public UBlueprintFunctionLibrary
{
    GENERATED_BODY()

   
    //@add ######
    public:

    UFUNCTION(BlueprintCallable, Category = "save")
        static bool FileSaveString(FString SaveString, FString SavePath);

    UFUNCTION(BlueprintPure, Category = "save")
        static bool FileLoadString(FString LoadPath, FString& LoadString);

};

    5. 修改 FileHelperFunction.cpp
// Fill out your copyright notice in the Description page of Project Settings.

#include "ReadConfigFile.h"
#include "FileHelperFunction.h"


//@add ######
bool UFileHelperFunction::FileSaveString(FString SaveString, FString SavePath)
{
    return FFileHelper::SaveStringToFile(SaveString, *(FPaths::GameDir() + SavePath));
}

bool UFileHelperFunction::FileLoadString(FString LoadPath, FString& LoadString)
{
    return FFileHelper::LoadFileToString(LoadString, *(FPaths::GameDir() + LoadPath));
}


    6. 建置 > 建置方案

-----------------------------------------------------------------------------------------------

C. Level Blueprint: 新增變數
    1. ConfigStrings: 字串陣列

    2. FilteredStrings: 字串陣列

    3. FilteredIndex: 整數

    4. debug: 布林

    5. remoteIP: 字串

    6. timeout: 整數

-----------------------------------------------------------------------------------------------

D. Level Blueprint: Load Config Strings



-----------------------------------------------------------------------------------------------

E. Level Blueprint: Filter Config Strings




-----------------------------------------------------------------------------------------------

F.
Level Blueprint: Set Config Vars








-----------------------------------------------------------------------------------------------

G. Package Project: Windows


-----------------------------------------------------------------------------------------------

H. Package Project: Mac



2017年4月9日 星期日

How to Connect Two Windows Together with an Ethernet Cable

since: 2017/04/09
update: 2017/04/09
reference:

A. 說明:
     二台 Windows 對連, 早期需使用跳線連結, 近年來的主機多已支援自動跳線,
     (Auto MDI/MID-X) 所以使用一般的網路線即可.

-----------------------------------------------------------------------------------------------

B. 二台電腦需設成相同的工作群組名稱

-----------------------------------------------------------------------------------------------

C. 網路設定 > 乙太網路 > 變更介面卡選項
     1. 變更介面卡選項

     2. 乙太網路 > 內容

     3. TCP / IPv4 > 內容

     4. 使用下列的 IP 位址:
         IP: 192.168.1.1  (另一台 IP 設為 192.168.1.2)
         submask: 255.255.255.0
         default gateway: 不用輸入

        勾選: 結束時確認設定
        > 確認
        > 點選: Turn on Network discovery

-----------------------------------------------------------------------------------------------

C. 網路設定 > 乙太網路 >
Windows 防火墻

     1. Windows 防火墻

     2. 開啟或關閉 Windows 防火墻

     3. 公用網路設定 > 關閉 Windows 防火墻

-----------------------------------------------------------------------------------------------

E. 測試
     1. 重新開機

     2. ipconfig

     3. ping

2017年3月27日 星期一

Unreal: Simple Head Up Display (HUD)

since: 2017/03/27
update: 2017/04/14
reference:
1. UMG UI Designer Quick Start Guide | Unreal Engine

A. 新增 Widget Blueprints
    1. Add New > User Interface > Widget Blueprint
        > 取名為: HUD, 並開啟.


    2. 在 Canvas Panel 下新增: Horizonal Box Panel

       Details:
    備註: 若要匯出成 VR 執行檔, 建議: Size X = 380; Size Y = 350, 螢幕才看得到.

    3. 在 Horizonal Box 下新增: Text Box (Editable)

       Details:

-----------------------------------------------------------------------------------------------

B. 在 Level Blueprint, 將此 Widget 顯示出來
     1. Event BeginPlay -> Create Widget

     2. 將 Class 設為先前新增的 HUD Widget

     3. 將 Return Value 提升(Promote)為變數

     4. 將此變數取名為: HUD Reference

      Details:

     結果:

     5. 加上 "Add to Viewport" 節點

-----------------------------------------------------------------------------------------------

C. 在 Level Blueprint, 設定 HUD Widget 顯示特定的文字
     1. 新增存放 Text 的變數:

      Details:

     2. 設定 HUD Widget 顯示特定的文字

     3. 顯示 / 隱藏 HUD Widget