Qiita記事

[UE4]Unreal.jsでUE4のエディタ拡張を作る

この記事は裏 Unreal Engine 4 (UE4) Advent Calendar 2016の5日目の記事です。 はじめに UnrealEngine4(UE4)はUnity3D(Unity)に比べるとエディタ拡張が作りにくい。Unityの場合、通常のゲームのコードを書くときと同じC# or UnityScriptで特別な環境がなくても書ける。一方、UE4の場合はVisualStudioかXcodeでUnreal C++で書かないといけない。 UE4でエディタ拡張をやりたい場合、「エディ...
2018-05-30
Qiita記事

Unreal.jsの型定義ファイルを再生成してAPIを調べやすくする

問題 Unreal.jsはVSCodeなどの補完が効くエディタ用に型定義ファイルを出力する機能がある。 大変便利なのだが、デフォルトで出力されているものはAPIがただ羅列しているだけである。そのため内容を調べるには名前から類推するか、Unreal C++の元のAPIのマニュアルを探す手間が必要だった。 Unreal.jsはマニュアルが充実しているとは言い難いのでこれはなかなかつらいところである。 解決方法 結論から書くと、型定義ファイルを生成するメソッド JavascriptCont...
2018-05-30
Qiita記事

[UE4]Unreal.jsでBlueprintからJSを実行する

Unreal.jsプラグインでは通常JSの実行手段はJavascriptコンポーネントを任意のActorにつけるか、ファイル名をextension-*.jsとする方法がある。ただし前者では何らかのActorをワールドに出す必要があり、後者はそもそもエディタの拡張用である。 可能なら任意のタイミングでBlueprint(以下、BP)からJS呼び出しのタイミングを制御したい。今回はその方法を簡単に説明する。 ゲーム起動時にJSを実行:カスタムGameInstanceクラスで呼ぶ UE4ではゲーム...
2018-05-30
Qiita記事

[UE4]Unreal.jsでJSのコードに型とフラグ情報を付与する

Unreal.jsプラグインでJavaScriptで作成したものをUE4の世界に認識させるには次の方法が必要になる。 ES2015(ES6)の書き方でクラスを生成 クラス・メソッド・プロパティに 型とフラグの情報を付与 uclass.jsで型とフラグ情報を解析させてUE4側にクラスを認識させる この「型とフラグの情報を付与」という部分が若干特殊なので説明。 Unreal.jsでの型およびフラグ情報の独自表現 周知の通り、JavaScriptには型表現の方法が基本的にない。一方UE4...
2018-05-30
Qiita記事

Unreal.js 入門

近年メジャーなゲームエンジンの二大巨頭と言えば、 UnrealEngine (UE)と Unity3D (Unity)だ。特にUEはハイエンド用途1に強く、映像用2としても使われている。 最新バージョンのUE4系では、C++もしくはブループリントと呼ばれるビジュアルプログラミング環境でゲームロジックを開発する。前者は主にプログラマ、後者は主にゲームデザイナやアーティストが使用する。職種による使い分けという意味ではC#かUnityScriptしかないUnityに比べると明確で、とても分かりやすい...
2018-05-30
Qiita記事

[UE4]BlueprintをQiitaなどのブログで共有する方法

UE4の強力なビジュアルスクリプティング言語である Blueprint は、ビジュアルスクリプティングという特徴から、Qiitaやブログで一般的な「コードを張り付けて共有」、といったことがしにくい。そこでいくつか方法をまとめてみた。 1. 一番よくある方法:画像 もっぱら使われる方法。 メリット 見たママを伝えられ、気軽 デメリット コピペができない 「目コピ」になるのでスピーディな共有ができない 2. テキストでコピペする 実はBlueprintはノードを選択し...
2018-05-30
Qiita記事

TypeScriptで型の異なるメソッドをオーバーライドする

これはなに TypeScriptでは親クラスのメソッドを継承する際、オーバーライド(同名メソッドの上書き)ができる ただし、引数や返り値の型の異なる場合はオーバーライドできない オーバーロード宣言と組み合わせる事で実現できる 前提:引数や返り値の型の異なるメソッドはオーバーライドできない TypeScriptは(、元のES2015の仕様に合わせ)特に何の宣言も不要でメソッドのオーバーライドができる。ただしJSと異なるのは引数や返り値の型のチェックが入るため、一致しないとオーバーライド...
2018-05-30
Qiita記事

今すぐ知るべきTypeScriptのストリングリテラル型

TypeScript1.8の目玉機能と言えば、 ストリングリテラル(String literal)型 だ。 String Literal Type | TypeScript Deep Dive ストリングリテラル型は文字列型(string型)にさらに制約を加えて、 特定の文字列のみ許可する ものだ1。JavaScript的にはただの文字列で、コンパイルタイムに型チェックされる。 ストリングリテラル型のいい所 何と言ってもJSに多い、引数に文字列キーを渡して処理を分ける関数をちゃんとチェ...
2018-05-30
Qiita記事

TypeScriptのクラスをnamespaceで拡張する(クラス定数、拡張メソッド、他)

namespaceはクラスの拡張に使える TypeScriptのnamespace1は本来の名前空間を分けるという事以外に、クラスを拡張してプロパティを生やすことができる。これを使うと本来文法的にできない、あるいは出来るけど通常の処理のコードと定義している事を明示化してメンテナンス性を向上する事が出来る。 具体的には、以下のルールに従って定義する。 class→namespaceの順に同じ名前で定義する namespaceで定義するプロパティは全てexport classをexportす...
2018-05-30
Qiita記事

TypeScriptでのイベント名を管理・指定するもう一つの方法(+ストリングリテラル型にも対応)

TypeScriptでのイベント名をclickで指定するのはもう辞めようという記事を読んで。ActionScriptでも同様な管理を公式が用意してくれていたのでとても便利だったのを思い出しました。ところがTypeScriptはあんまり公式でこういったものを用意してくれません。こういったコードの安全性やメンテナンス製に関わる箇所は公式が運用を広めるべきなんですが…。 namespace + const さて、TypeScriptでは上記の方法以外にもいい方法があります。それはnamespaceと...
2018-05-30