UE C++ UActorComponent継承クラスの子Blueprintクラスを作成できるようにする
UE4エディタ上でUActorComponent継承クラスを作ると子Blueprintクラスが作れない問題。
自動生成されたコードはこんな感じ
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) class UTestActorComponent : public UActorComponent { GENERATED_BODY() //実装 };
子Blueprintクラスを作れるようにするにはUCLASS()マクロを以下の様に変更すればよい。
UCLASS(ClassGroup = (Custom), BlueprintType, Blueprintable, meta = (BlueprintSpawnableComponent))
参考サイト
UE4 W155007: ... is not a working copyエラーの解決
上記の記事の方法でソースコントロールしている最中、こんなエラーが表示された。
svn :warning: W155007: "...\Engine\Content" is not a working copy svn: E195013: "...\BP_test.uasset" is not locked in this working copy
解決法
エクスプローラーでSVNチェックアウトしたプロジェクトフォルダを右クリックし、TortoiseSVN → ロックを取得。ここで一度全てにロックを掛ける。
続けて右クリック → TortoiseSVN → ロックを解除で全てのロックを外す。
これで解決。正直原因も解決した理由もわかってないが誰かの参考にになれば。
UE4 マテリアルで円グラフを作る
こちらのブログを参考に円グラフを作ってみた。
円グラフ #UE4 #UE4Study pic.twitter.com/zHzk9S04vw
— ai (@ai_9684_dct) August 17, 2018
マテリアル全体図
見づらいところを拡大。
MF_CircleTopStartの中身
注意はTexCoordのTilingを2.0に設定すること。
UE4 Cascadeでパーティクル放出を1回だけにする
毎回忘れてググるので自分のブログにメモがてら書いておく。
パーティクルを1度だけ放出させたいときはEmitterのRequiredモジュールで、
Emitter Loopを「1.0」に設定する。
もし、無限回ループさせたい(無限に放出させたい)ときは「0.0」に設定する。
Cacade、めったに触らないので毎回基本的なことを忘れてしまう……
Qt5 QListViewのダブルクリック編集を無効にする
最近Qt5を触ってるのでそのメモ。
QListViewにQStringListModelを突っ込み、リストビューを作るのはそんなに難しくない。
#include "mainwindow.h" #include <QLayout> #include <QString> #include <QStringListModel> MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { QListView *listView; //QListViewを生成,ここにlistModelを追加していく listView = new QListView(); Q_CHECK_PTR(listView); //listItemTextに文字をセットする QStringList listItemText; listItemText << "001"; listItemText << "002"; listItemText << "003"; QStringListModel *model; model = new QStringListModel(); //モデルにlistItemTextを追加する model->setStringList(listItemText); //listViewにmodelをセット listView->setModel(model); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(listView); setLayout(mainLayout); setWindowTitle(tr("ListViewTest")); }
実行するとこんな感じ。
ただこのままでは一つ問題があって、要素をダブルクリックすると中身を書き換えることができてしまう。
これを解決するには、下の1行が必要。
listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
これでダブルクリック編集が無効になる。
参考サイト
http://doc.qt.io/archives/qt-4.8/qabstractitemview.html#EditTrigger-enum https://stackoverflow.com/questions/6226185/uneditable-qlistview
しかしQtの公式ドキュメントは本当に充実している。UE4もこれぐらいドキュメント使いやすくしてほしいなあ。
UE4 SD ベルトコンベアを作る
最近UE4を触っていなかったのでリハビリを兼ねてベルトコンベアを作った。
適当にベルトコンベア pic.twitter.com/T157sbBfQ9
— ai (@ai_9684_dct) 2018年8月6日
Substance Desingerでテクスチャを作る
Substance Designerを使ってベルトコンベア用のテクスチャを作る。説明するほどの事はしていないので画像を説明と代えさせてもらう。こと無機物のテクスチャを作ることにおいてSubstance Designerは最強のツールだと思う。
マテリアルを編集する
作ったテクスチャはsbsar形式でexportし、"Substance Plugin"を導入したUE4で読み込むことが出来る。自動でマテリアルが生成されるのでそれにタイリングやUVアニメート機能を組み込んでいく。
タイリングは、TexCoordをR,Gでそれぞれマスクし、ScalarParameterをかけ合わせればよい。
UVアニメートをX方向Y方向、それぞれをパラメータで制御したい時はMakeFloat2を間に噛ませてSpeedに繋げなければならない。
あとはこれを各テクスチャのUVsにつなげれば良い。
板ポリに貼る
編集したマテリアルを親にマテリアルインスタンスを生成。モードパネルにあるPlaneにそのマテリアルインスタンスを適用し、パラメータを変えれば冒頭の動画のようなベルトコンベアの完成。
UE4 VPS上にSVNサーバを立ててUE4でソースコントロールしたい(コミット編)
続き。
前回でレポジトリの作成と公開ができた。今度はこのリポジトリにUE4プロジェクトを追加して、ソースコントロールに繋ぐ。
TortoiseSVNをDLする
TortoiseSVNの最新バージョンを以下のリンクからDLし、インストールする。
UE4プロジェクトをチェックアウト&コミットする
予めバージョン管理したいUE4プロジェクトを作成しておく。エクスプローラーからそのプロジェクトが入っているディレクトリに移動し、その上で右クリック→SVNチェックアウトを行う。
この時リポジトリのURLにはブラウザでSVNリポジトリを確認する時使ったURLをコピペする。"空でないフォルダーにチェックアウトする"などと警告が出るが無視すればよい。
続けて右クリック→SVNコミットを選択し、プロジェクト全体をリポジトリにコミットする。
ソースコントロールに接続
ここまで終わったらUE4でプロジェクトを開く。ツールバーからソースコントロールを開き、
- プロバイダを「Subversion」
- Repositoryを「ブラウザで確認した時に使ったレポジトリのURL」
- User Name、Passwordを「sudo htpasswdで設定したユーザー名、パスワード」
として設定を承認する。
画像のようにソースコントロールの横に緑色のアイコンが表示されたら成功。
他のPCと共同作業する時
他のPCと共同作業したい時はまず、VPS上のUbuntuで以下のコマンドを叩く。
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd username $ sudo service apache2 restart
これでユーザーを新規追加することが出来る。共同作業するメンバーにそれぞれこのユーザーを割り振るとよい。
共同作業に参加する人はエクスプローラーのどこでもいいので右クリック→SVNチェックアウトを選択。そうすると自動的にリポジトリに上がっているプロジェクトがダウンロードされる。
ここまでできたら後はプロジェクトを起動して同様にソースコントロールに接続するだけ。
まとめ
VPS契約というお金のかかる方法だが、自宅でサーバ構築して運用する時も電気代がかかることを考えればそこまで差はないと思う。
UE4でチーム制作をする時は是非この方法で上手くソース管理をしてみてほしい。