UE4 Windowsパッケージにおいてのアンフォーカス時の対応(Sound再生、GamePadの入力)

フォーカスがないときの挙動 私はお仕事でUE4をゲーム以外の用途で使っているのですが、Windowsで他のアプリケーションと一緒に使うことが多いです。 よくあるパターンがUE4で表示部分を作り、WPFでコントローラーのようなものを作り組み合わせて使うパターン。 このパターンではどうしてもフォーカスはWPFアプリケーション側にくるので、UE4のウィンドウにはフォーカスが無い状態になります。 そうすると以下のような困ったことが起こりました。 音が聞こえない GamePadの入力がとれない これらについて中々対策が見つからなかったのですが、Engineソースを確認したところ2つとも対策が見つかりましたので覚書として書いておきます。 なお、この記事の対処をしたのは4.24の環境ですが、4.25でもその部分の実装は変わってなさそうなので同じ対応でよいのかと思っています(4.25では動作確認まではしてません) アンフォーカス時の音の再生 WindowsPlatformApplicationMisc::PumpMessagesにて以下の記載を見つけました。 // if its our window, allow sound, otherwise apply multiplier FApp::SetVolumeMultiplier( HasFocus ? 1.0f : FApp::GetUnfocusedVolumeMultiplier() ); SetVolumeMultiplierは音のボリュームをセットする関数のようですが、ここでフォーカス有りの場合は1.0を、そうでない場合はGetUnfocusedVolumeMultiplierの値を使っています。 そしてGetUnfocusedVolumeMultiplierが返す値を調べると0になっておりました。 なので聞こえないんだなあ。 ただ、この値の初期値はConfigからとられていることが分かります。 static bool GUnfocusedVolumeMultiplierInitialised = false; float FApp::GetUnfocusedVolumeMultiplier() { if (!GUnfocusedVolumeMultiplierInitialised) { GUnfocusedVolumeMultiplierInitialised = true; GConfig->GetFloat(TEXT("Audio"), TEXT("UnfocusedVolumeMultiplier"), UnfocusedVolumeMultiplier, GEngineIni); } return UnfocusedVolumeMultiplier; ということで、以下の設定をConfig/DefaultEngine.iniに書いてUnfocusedVolumeMultiplierの値も1.0になるようにして動作を確認しました。 [Audio] UnfocusedVolumeMultiplier=1.0 アンフォーカス時でも音が聞こえてきて成功です。 アンフォーカス時のGamePadの入力 UE4でGamePadの入力はWindowsではXInputというAPIを使っています。 なので、そこから検索するとXInputInterfaceというクラスが見つかりました。 中身を確認するとXInputのAPIを呼んでいるのでここがGamePadの入力を受け取っている可能性が高いです。 次にXInputInterfaceを使っている箇所を探し、FWindowsApplicationにて使われていることが分かりました。 するとFWindowsApplication::PollGameDeviceStateにてXInputの入力イベントを発火していそうです。 更にこの関数はFSlateApplication::PollGameDeviceState()から呼ばれています。 FSlateApplication::PollGameDeviceState()の中身を見るとifでガードされています。 if( ActiveModalWindows.Num() == 0 && !GIntraFrameDebuggingGameThread && (!bRequireFocusForGamepadInput || IsActive())) { // Don't poll when a modal window open or intra frame debugging is happening PlatformApplication->PollGameDeviceState( GetDeltaTime() ); } ここには3つの条件がありますが、最後のIsActive()はフォーカスを持つことのような気がします。 しかにここにbRequireFocusForGamepadInputというダイレクトで関わりが深そうな変数があります。 ...

2020-05-31 · 1 分 · 118 文字 · ayumax

UPropertyからFPropertyへの変化(UE4 4.25)

Unreal Engine 4.25 Preview 先日UE4の4.25のPreviewがダウンロードできるようになりました。 (この記事を書いている段階ではPreview3になっています) その内容は以下のページに記載されています。 Unreal Engine 4.25 Preview - Unreal Engine Forums たくさんある更新内容の中で、以下の項目が目に留まりました。 (FProperty Refactor…の部分です) 内容は「4.25からはUPropertyはFPropertyとなってUObjectではなくなりました」というものです。 今までUPorpertyはUObjectを継承していました。 UE4ではUObjectを継承しているクラスはUから始まる命名規則があります。そのためUPropertyというクラス名でした。 参考 [コーディング標準](https://docs.unrealengine.com/ja/Programming/Development/CodingStandard/index.html) それがUObjectを継承しなくなった(FFieldというクラスを継承するようになっています)ため、FPropertyというクラス名に変わったということでした。 UPropertyとは そもそも今回変更されたUProperty(FProperty)とは何なのかというと、UE4のプロパティシステムによって作られたC++クラスのメンバー変数または関数の引数の情報になります。 詳細は以下の公式ページに詳しく説明されています。 参考 [Unreal Property System (Reflection)](https://www.unrealengine.com/ja/blog/unreal-property-system-reflection) 更にUPropertyはプロパティの型によって、UStringPropertyやUBoolPropertyなどに派生されています。 UE4のエンジン内部では色々な用途に使われていますが、我々UE4を使う側の立場では、例えば以下のようなことをしたい時に使うことになります。 ブループリントで定義したオブジェクトのプロパティにC++側からアクセスしたい オブジェクトの独自のシリアライザを作りたい オブジェクトのプロパティをプロパティ名を指定して触りたい このようにUPropertyを使ってUE4のプロパティシステムを使うと、より柔軟にオブジェクトを操作する仕組みが構築できます。 (参考)オブジェクトの全てのプロパティの値を取得する例 以下のコードはObjの全てのプロパティの値を取得しています。 (※ この例では全てのプロパティの型はuint8であるという前提です) for (TFieldIterator<UProperty> PropIt(Obj->GetClass()); PropIt; ++PropIt) { UProperty* Property = *PropIt; // プロパティ名を取得 FString PropertyName = Property->GetName(); // プロパティの値を取得 uint8 CurrentPropAddr = *(PropIt->ContainerPtrToValuePtr<uint8>(Obj)); } なぜFPropertyに変更されたのか 全部の情報を追い切れてないので個人的な想像を多分に含みますが、UObjectで無くすことによりGC(ガベージコレクション)の管理対象外にしたかったのが大きな理由なのかなと考えています。 UObjectとしてインスタンスをメモリに確保すると、GCが適切なタイミングでインスタンスを破棄するべきかどうかをチェックします。 チェックの結果破棄するべきとなったインスタンスは破棄されることになります。 プロジェクト全体でUObjectのインスタンス数が多いと、このGCが破棄対象をチェックする際の検索時間が多くなってしまいます。 (調べる対象の個数が絶対的に多くなってしまうため) ...

2020-03-22 · 1 分 · 140 文字 · ayumax

ObjectDeliverer Ver 1.5.0リリース ObjectのJsonシリアライズ機能の強化

本日ObjectDelivererのVer 1.5.0をマーケットプレイスにリリースしました。 ObjectDeliverer:ayumax:Code Plugins - UE4 マーケットプレイス 今回の実装内容はObjectのJsonシリアライズ機能の強化です。 これについては以前の記事に現状の課題として書いていました。 UObjectをJsonにシリアライズしよう - AYU MAX 今回のリリースでは上記課題を改善する機能実装になります。 実装項目 以下の2項目を対応しました。 プロパティ名の変換 How to change property name when serializing UObject with Json(Version 1.5.0 or later) · ayumax/ObjectDeliverer Wiki · GitHub シリアライズ対象のクラスにIODConvertPropertyNameインターフェイスを実装することで、プロパティ名の変換ができるようになりました。 使用例) // 変換前 { "Prop2": 1, "ObjProp": { "ValueB": 0, "ValueA": 0 }, "ObjProp2": { "ValueC": "abc" } } // 返還後 { "IntProperty": 1, "ObjectPropertyA": { "ValueB": 0, "ValueA": 0 }, "ObjectPropertyB": { "ValueC": "abc" } } この機能を使うことで以下のようなことが可能になります ...

2020-01-24 · 1 分 · 140 文字 · ayumax

UE4+ARKitで作る遠隔タッチディスプレイ

先日頭の中にあったアイデアを形にしたくて、↓こんなものをつくりました。 {{< x user=“ayuma_x” id=“1210122895520718849” >}} iPadの上を指でなぞると、iPadの中のディスプレイに線が引かれているのですが、iPadを取り除くと実際のディスプレイにも同じ線が引かれています。 これは初見だと混乱するかもしれませんが、実はiPad側には何も表示は加えていません。iPadのディスプレイにはカメラの映像のみ表示しています。 何をしたかったのか? 少し前に仕事でiPad使ってARのコンテンツを作っていたのですが、その時に感じた「AR=[何か表示を重ねる]以外の使い方を考えてみたいな」と思ったのがきっかけです。 今回行った内容も多分誰かが似たようなことはやっているのだとは思いますが、「自分で考えてアイデアを形にすることに意味がある」ということでやってみました。 今回の実験においてiPadは入力機器として使います。 ARKitには画像検知や物体検知の機能があり、これをうまく使うことで遠隔タッチディスプレイを作ろうというアイデアです。 やるべきこと このアイデアを形にするためにやるべきことを以下にまとめました。 今回iPadのアプリケーションはUE4(4.24)のHandheld AR ブループリント テンプレートをベースに作ります。 iPadに映っているディスプレイの位置、角度を知る iPadに触れた指の位置をディスプレイの相対座標として知る iPadからPC側に座標を送る PC側で送られた座標にしたがって線を引く iPadに映っているディスプレイの位置、角度を知る まずはディスプレイの位置を知る必要があります。 位置を知る方法として「画像を利用したマーカー方式」と「物体検知」の2通りを考えましたが今回は物体検知を選びました。 UE4+ARKitでの物体検知の使い方は以前記事にしているので、興味ある方はみてください。 UE4でARKitの物体検出機能を使う - AYU MAX まずはディスプレイをスキャンして検知するためのデータづくりを行ったのですが、ディスプレイの形状に特徴点が少なく満足する結果が得られませんでした。 そこでディスプレイ横のごちゃごちゃした所の検知データを作成し、ディスプレイの位置、角度はそのポイントからの相対位置で判断するようにしました。 当然ですが、この方法ではディスプレイとの位置関係を変えてしまうと破綻します。 ↓スキャンしているところ スキャン後にディスプレイの位置、角度を知るのは上記した以前の記事の内容そのままです。 iPadに触れた指の位置をディスプレイの相対座標として知る 次にiPadに触れた指の位置を知るにはどうすれば良いか考えます。 今回使っているUE4のARテンプレートの中の実装には、タッチしたポイントにActorがあるかどうか調べるロジック(BP_ARPawnのWorldHitTest関数)があります。 これをちょっといじってディスプレイの位置を知ることを考えました。 まず現実世界のディスプレイと同じ大きさになるような板メッシュを用意してレベルに配置しておきます。このメッシュは見える必要はないので透明なマテリアルをつけときました。 次に毎Tick, ARKitが現実のディスプレイを検知した位置、角度にこのメッシュを移動させます。 次にWorldHitTest関数の中を見ると、LIneTraceForObjectsというノードが使用されているのが分かります。 LIneTraceForObjectsは指定した2点の間に3Dオブジェクトがあるかどうかの判定ができます。 このノードと直前に配置されているDeproject Screen to Worldを組み合わせると、タッチしたときのiPad上のスクリーン座標(x, y)から触れている場所に配置してある3Dオブジェクトが特定できます。 この仕組みを使うと、先ほど配置したメッシュを指で触れているかどうかということが分かります。 ただし、今回知りたいのはディプレイのどこを触れているかなので、もう少し詳細な情報が必要です。 そこでLIneTraceForObjectsで返される値をFind Collision UVに入れる部分を足してみました。 これで触れた3Dオブジェクトの表面のどの部分(UV座標)という情報までとれます。 ※ Find Collision UVを使うにはProject SettingsでSupport UV From Hit ResultsのチェックをONにする必要があります。(多分ONにすると処理負荷は上がっちゃいます) iPadからPC側に座標を送る iPadからPC(Windows)へはソケット通信(UDP)で座標を送ることにします。 UDP送信にはObjectDelivererを使います。 ObjectDelivererについては過去記事みてください。 まずは送信するための入れ物を作ります。といっても簡単で以下のようなブループリントを定義します。TouchPositionというオブジェクトの名前にしました。 ...

2019-12-28 · 1 分 · 86 文字 · ayumax

UObjectをJsonにシリアライズしよう

この記事はUnreal Engine 4(UE4) Advent Calendar 2019の20日目の投稿記事です。 Unreal Engine 4 (UE4) Advent Calendar 2019 - Qiita 私がマーケットプレイスに公開しているObjectDelivererというプラグインがあります。 今回の記事はこのプラグインに実装している「オブジェクトをJsonにシリアライズする機能」について書きます。 例えばこんなVariablesを定義したブループリント(Objectを継承)があるとすると、 こんな感じのJson文字列に変換されます。 { "IntValue":0, "BoolValue":false, "StringValue":"ABC" } Jsonは文字列で表現されるので、そのままテキストファイルに保存することもできます。 また文字列なので人間の目で見ても中身が分かりやすいです。 このJsonをオブジェクトに復元する機能も作ることで、Jsonを介してオブジェクトの保存-復元ができるようになるのです。 ObjectDelivererではこのJson文字列を通信に乗せて送受信することで、オブジェクトを別の場所(別のアプリケーション)に届けることができています。 UE4におけるJsonの取り扱い UE4には標準でJsonとJsonUtilitiesというモジュールがあります。 Jsonモジュール Jsonの読み書きをサポートするモジュールです。ただしブループリントでは使用できずC++のみサポートされています。 こんな感じで使えます。 Jsonオブジェクト→Json文字列 // FJsonObject(Jsonデータの入れ物)を作成 TSharedPtr&lt;FJsonObject> jsonObject = MakeShareable(new FJsonObject()); // jsonObjectにプロパティを追加 // FStringにJsonを書き込むためのWriterを作成 FString OutputString; TSharedRef&lt;TJsonWriter&lt;>> Writer = TJsonWriterFactory&lt;>::Create(&amp;OutputString); // JsonをFStringに書き込み FJsonSerializer::Serialize(jsonObject.ToSharedRef(), Writer); // OutputStringにJson文字列が入っているので何かする Json文字列→Jsonオブジェクト // json文字列が入っているFString FString jsonString; // FStringからJsonを読み込むためのReaderを作成 TSharedRef&lt;TJsonReader&lt;TCHAR>> JsonReader = TJsonReaderFactory&lt;TCHAR>::Create(jsonString); // FJsonObject(Jsonデータの入れ物)を作成 TSharedPtr&lt;FJsonObject> JsonObject = MakeShareable(new FJsonObject()); // Json文字列からJsonオブジェクトに読み込み FJsonSerializer::Deserialize(JsonReader, JsonObject); // jsonObjectからプロパティを取り出して何かする Jsonオブジェクトの値のGet, Set TSharedPtr&lt;FJsonObject> JsonObject = MakeShareable(new FJsonObject()); // 値のセット JsonObject->SetNumberField("IntValue", 1); JsonObject->SetBoolField("BoolValue", true); JsonObject->SetStringField("StringValue", "ABCDEFG"); // 値の取得 int32 intValue = JsonObject->GetIntegerField("IntValue"); bool boolValue = JsonObject->GetBoolField("BoolValue"); FString stringValue = JsonObject->GetStringField("StringValue"); // このほかArrayやObjectプロパティもGet, Setできます 上記パターンを知っていれば、だいたいのケースで対応できると思います。 ...

2019-12-20 · 2 分 · 355 文字 · ayumax

ObjectDeliverer Ver 1.4.0リリース 送信元IPアドレスの取得機能追加

ObjectDeliverer Ver 1.4.0 数日前の話ですがObjectDelivererの新バージョンをリリースしました。 (ブログ書こうと思って忘れてた) ObjectDeliverer:ayumax:Code Plugins - UE4 マーケットプレイス 送信元IPアドレスの取得機能追加 通信プロトコルをTCP/IP Server もしくはUDP Receiverにしている場合にのみ使用可能な機能です。 これら2つの通信プロトコルでは、送信元が複数のIPアドレスの可能性があります。 ただし以前のバージョンまではどこからの送信だったのかを知るすべがありませんでした。 (TCP/IP Serverには厳密には送信元を区別して認識する機能はありましたが、IPアドレスを知る機能はありませんでした) これはObjectDelivererの設計思想の「異なる通信プロトコルを同じように切り替えて使える」を実現するために、あまり個別のプロトコルに特化した機能は入れたくなかったというのがあります。 ただ現実的にないと困ることもあり、今回実装しました。 以下仕様例です。 ReceiveDataイベントのClientSocketオブジェクトをGetIPV4Infoインターフェイスを通して使うことで情報の取得ができます。 今回追加したGetIPV4InfoインターフェイスにはIPアドレスをuint8の要素数4の配列で取得するGetIPAddressと"...“の文字列形式で取得するGetIPAddressinStringがあります。 対応している通信プロトコル以外ではReceiveDataイベントのClientSocketオブジェクトがGetIPV4Infoインターフェイスを実装していないため、インターフェイスへのキャストで失敗します。 今後もなるべく同じように使えるというコンセプトは崩したくないですが、個別プロトコル固有の機能はインターフェイス経由で使えるようにしていこうと思います。

2019-10-20 · 1 分 · 26 文字 · ayumax

UE4のスクリプトをC#で書きたい(実験編)

C#でスクリプトを書きたい 私はUE4のC++は好きです。マーケットプレイスにもいくつかC++プラグインを出してます。ですがC#もたくさん書いているので、時々C#だったらもっと楽に書けるのになあと思うことはあります。 そんな事を考えていて、ふと次のような書き込みをTwitterでしました。 {{< x user=“ayuma_x” id=“1165145950710484993” >}} すると@kekyo2さんからこんなお誘いがあり、今日実際に1日かけてトライしてきました。 IL2C 今回の主役となるツールは@kekyo2さんの作成されているIL2Cです。 IL2Cを用いるとC#をコンパイルしたILを含むDLLやEXEからC言語のソースコードが生成できます。( 凄い) これを使ってC#のコードをUE4のC++から呼んでみようというのが今日行った実験です。 開発環境 今回行った実験は以下の環境でおこなっています。 Visual Studio 2019 Unreal Engine4 Ver. 4.22 また、以下に今回行った手順を書いていきますが色々試行錯誤した結果のため、手順を見ただけでは何故それをやるのかわからない箇所もあるかと思います。 今回の試みはまだ実験段階のためご了承ください。 今回作成したプロジェクト一式は以下に置いてあります。(UE4, C#全部入ってます) C#プロジェクトの作成 まずC#のクラスライブラリのプロジェクトを作成します。今回は.NET Standardのクラスライブラリを選択しました。 次にプロジェクトファイル(*.csproj)のPropertyGroupにというタグを追加しtrueの値を記述します。 この記述は通常.cで出力されるファイルを.cppで出力します。 これはUE4でこの後ビルドを正常に通すために必要な設定です。 &lt;PropertyGroup> &lt;TargetFramework>netcoreapp2.1&lt;/TargetFramework> &lt;IL2CEnableCpp>true&lt;/IL2CEnableCpp> &lt;/PropertyGroup> 次にデフォルトで作成されているClass1.csに以下の記述を行います。 using System; namespace UE4Il2CSample { public class Class1 { public static int Add(int a, int b) => a + b; } } staticなメソッドを1個用意しました。 単純にint型の引数2つを足し算する関数です。 ...

2019-09-15 · 2 分 · 290 文字 · ayumax

UE4で作ったiOSアプリのディレクトリを標準ファイルアプリで共有する

UE4で作成したiOSアプリのパッケージの中身のディレクトリを、iOS標準のファイルアプリで確認するための方法です。 Project SettingsのiOSで以下の2つを実施します。 File System - Supports ITunes File Sharing チェックON Extra PList Data- Additional Plist Data 以下を入力 &lt;key>LSSupportsOpeningDocumentsInPlace&lt;/key>\n&lt;true/>\n 上記設定で作成したアプリをiOS端末に入れると、標準ファイルアプリの「このiPad内」からアプリの中身が確認できます。 この方法を使うと他のアプリからUE4で作成したアプリにファイルを渡せそうなので使い道がありそうです。

2019-08-28 · 1 分 · 21 文字 · ayumax

UE4でARKitの物体検出機能を使う

ARKitの物体検出(Object Detection) 物体検出機能はARKit2から利用可能になった機能で、あらかじめスキャンした物体のデータを登録しておくと作成したARアプリケーションから登録済みの物体を検出することができるようになります。 この機能についてはUnityを使った事例はいくつか記事になっているのですが、UE4を使った事例は見つかりませんでした。 今回どうしてもこの機能をUE4(4.22)で使いたくて、色々試し動かすことに成功したのでやり方をメモしておきます。 オブジェクトのスキャン まずは検出する物体のスキャンをします。 UE4を使ったスキャン UE4を使ってスキャンする場合は、まずARSessionConfigのSession Typeを「Object Scanning」にしてから、「Get AR Candidate Object」を使用して行うらしいです。 上で「らしい」という言葉を使ったのは理由があり、現状上記やり方ではスキャンは成功してないです。 「Get AR Candidate Object」をコールした際にアプリケーションが落ちてしまいスキャンはできませんでした。 成功した方がいらっしゃったら、教えてください。 Apple提供ツールを使ったスキャン 以下のサイトの上部にある「Download」ボタンを押すと、オブジェクトスキャンをするためのiOSアプリのプロジェクト一式がダウンロードできます。 Scanning and Detecting 3D Objects | Apple Developer Documentation ダウンロードしたプロジェクトをXCodeを使って、自分のiOS端末にいれて使用します。 使い方は結構直観的に分かり、最初に黄色いBoxで領域を確定した後、各面毎にスキャンを行います。 黄色いBoxの中に小さい黄色い点(多分物体の特徴点)がたくさんあったほうが後の検出率が高いような気がしています。 スキャンが終わると*.arobjectという拡張子のファイルが生成されるので、iCloudとかを利用して開発マシンまでファイルを持っていきます。 XCodeやUnityを利用したARアプリ開発の場合は上記方法で完結しており、*arobjectのファイルがそのまま利用できます。 UE4の場合はそのままは利用できず、ダウンロードしたスキャンアプリを一部書き換える必要があります。 ViewController.swiftのcreateAndShareReferenceObjectメソッド 変更前 try object.export(to: documentURL, previewImage: testRun.previewImage) 変更後 try NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: false).write(to: documentURL) 上記書き換え部分はファイルを生成する部分なのですが、利用する関数が違います。 変更前はARReferenceObjectクラスのexportを使っているのですが、これをNSKeyedArchiverを使ってバイナリ化した後そのままファイルに書き込むように変えました。 またオリジナルと区別するためファイルの拡張子を(*.arobject2)に今回はしています。 これはUE4のARKitプラグインでバイナリを復元する際(FAppleARKitConversion::ToARReferenceObjectSet)に使われているのがNSKeyedUnarchiverだからです。 最初書き換えなしで*.arobjectのファイルを読み込ませたところ、ARReferenceObjectの復元に失敗したため調査したところ上記書き換えで成功するようになりました。 arobjectファイルにはUnityで読み込むと静止画のサムネイルが表示されていたので、そういった付加情報が*.arobjectには入っており後者のファイルとはバイナリに保存される内容が違うのが原因かなと思っています。 スキャンデータのUE4への取り込み ARCandidateObjectアセットの作成 スキャンして生成された*.arobject2ファイルをUE4に取り込みたいのですが、今回は専用のアセット生成クラス(UFactoryを継承したクラス)をC++で書きました。 ファイルの中身は以下になります。 ここで気を付ける点としては、上記C++クラスはEditorの機能を利用するため、UnrealEdモジュールへの参照追加の必要があります。 また自分のプロジェクトのRuntimeモジュールにいれてしまうとアプリの書き出し時にエラーがでるので、Editorモジュールにいれてください。 このモジュールについては以下のヒストリアさんのサイトが分かりやすいです。 [UE4] モジュールについて|株式会社ヒストリア 上記ファイルをプロジェクトに追加してビルドすると*.arobject2ファイルをドラッグすることでファイルがインポートされてARCandidateObjectのデータアセットが作られます。 アセットを開くと「Candidate Object Data」の配列に大きな数字が入っているのが分かると思います。 ここに*.arobject2ファイルの中身がバイナリ形式で入っています。(配列を開くと数が多いのでとても重いです。開かないほうがいいと思います) ...

2019-08-15 · 1 分 · 103 文字 · ayumax

ObjectDeliverer Ver 1.3.0リリース マルチプラットフォーム対応

ObjectDeliverer Ver 1.3.0 本日ObjectDelivererの新バージョンをリリースしました。 ObjectDeliverer:ayumax:Code Plugins - UE4 マーケットプレイス 内容は以下の2点です。 iOS, Android, Macへの対応 UDPReceiverを使用した時にエディタ終了時まれにフリーズする不具合を修正 iOS, Android, Macへの対応 最近個人的にUE4でモバイルアプリの作成を開始したこともあり検証環境ができてきたので、モバイルOSの対応を実施しました。 ただ内部的なコードの変更は何もしておらず、各種OS向けにパッケージを作成したのみとなります。 もともとほとんどの仕組みをUE4のC++クラスのみを利用して作成していたため、今確認できる範囲では各種OSでもちゃんと動作が確認できています。 これによりスマホアプリとデスクトップアプリや、スマホアプリ同士での通信ができるようになるため、プラグインとしての使い勝手が今まで以上に広がると思っています。 UDPReceiverを使用した時にエディタ終了時まれにフリーズする不具合を修正 もう1点は不具合修正になります。 UDPの受信機能を使用している場合に、タイミングが悪いとエディタ終了時にフリーズしてしまう不具合があったため修正しました。 他のプラグインの対応 現状ObjectDeliverer以外のプラグインは全てWindowsのみの対応としていますが、今回の対応で対応方法が分かってきたので、他のプラグインも時期をみてモバイルOSの対応も実施したいと思っています。

2019-07-31 · 1 分 · 26 文字 · ayumax