Gaming Life

一日24時間、ゲームは10時間

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))

参考サイト

forums.unrealengine.com

UE4 W155007: ... is not a working copyエラーの解決

ai-gaminglife.hatenablog.com

 上記の記事の方法でソースコントロールしている最中、こんなエラーが表示された。

svn :warning: W155007: "...\Engine\Content" is not a working copy
svn: E195013: "...\BP_test.uasset" is not locked in this working copy

f:id:ai_gaminglife:20180827013545p:plain

解決法

 エクスプローラーでSVNチェックアウトしたプロジェクトフォルダを右クリックし、TortoiseSVN → ロックを取得。ここで一度全てにロックを掛ける。

f:id:ai_gaminglife:20180827013603p:plain

 続けて右クリック → TortoiseSVN → ロックを解除で全てのロックを外す。

 これで解決。正直原因も解決した理由もわかってないが誰かの参考にになれば。

UE4 マテリアルで円グラフを作る

f:id:ai_gaminglife:20180817221921p:plain

pafuhana1213.hatenablog.com

shop-0761.hatenablog.com

こちらのブログを参考に円グラフを作ってみた。

マテリアル全体図

f:id:ai_gaminglife:20180817221953p:plain

見づらいところを拡大。

f:id:ai_gaminglife:20180817222031p:plain

MF_CircleTopStartの中身

f:id:ai_gaminglife:20180817222151p:plain

注意はTexCoordのTilingを2.0に設定すること。

f:id:ai_gaminglife:20180817222207p:plain

UE4 Cascadeでパーティクル放出を1回だけにする

毎回忘れてググるので自分のブログにメモがてら書いておく。

パーティクルを1度だけ放出させたいときはEmitterのRequiredモジュールで、

Emitter Loopを「1.0」に設定する。

もし、無限回ループさせたい(無限に放出させたい)ときは「0.0」に設定する。

f:id:ai_gaminglife:20180815225127p:plain

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"));
}

 実行するとこんな感じ。

f:id:ai_gaminglife:20180809154812p:plain

 ただこのままでは一つ問題があって、要素をダブルクリックすると中身を書き換えることができてしまう。

 これを解決するには、下の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を触っていなかったのでリハビリを兼ねてベルトコンベアを作った。

Substance Desingerでテクスチャを作る

 Substance Designerを使ってベルトコンベア用のテクスチャを作る。説明するほどの事はしていないので画像を説明と代えさせてもらう。こと無機物のテクスチャを作ることにおいてSubstance Designerは最強のツールだと思う。

f:id:ai_gaminglife:20180806232641p:plainf:id:ai_gaminglife:20180806232646p:plainf:id:ai_gaminglife:20180806232648p:plainf:id:ai_gaminglife:20180806232644p:plain

マテリアルを編集する

 作ったテクスチャはsbsar形式でexportし、"Substance Plugin"を導入したUE4で読み込むことが出来る。自動でマテリアルが生成されるのでそれにタイリングやUVアニメート機能を組み込んでいく。

f:id:ai_gaminglife:20180806233121p:plainf:id:ai_gaminglife:20180806232709p:plain

 タイリングは、TexCoordをR,Gでそれぞれマスクし、ScalarParameterをかけ合わせればよい。

 UVアニメートをX方向Y方向、それぞれをパラメータで制御したい時はMakeFloat2を間に噛ませてSpeedに繋げなければならない。

 あとはこれを各テクスチャのUVsにつなげれば良い。

板ポリに貼る

 編集したマテリアルを親にマテリアルインスタンスを生成。モードパネルにあるPlaneにそのマテリアルインスタンスを適用し、パラメータを変えれば冒頭の動画のようなベルトコンベアの完成。

UE4 VPS上にSVNサーバを立ててUE4でソースコントロールしたい(コミット編)

 続き。

ai-gaminglife.hatenablog.com

 前回でレポジトリの作成と公開ができた。今度はこのリポジトリUE4プロジェクトを追加して、ソースコントロールに繋ぐ。

TortoiseSVNをDLする

 TortoiseSVNの最新バージョンを以下のリンクからDLし、インストールする。

tortoisesvn.net

UE4プロジェクトをチェックアウト&コミットする

 予めバージョン管理したいUE4プロジェクトを作成しておく。エクスプローラーからそのプロジェクトが入っているディレクトリに移動し、その上で右クリック→SVNチェックアウトを行う。

 この時リポジトリのURLにはブラウザでSVNリポジトリを確認する時使ったURLをコピペする。"空でないフォルダーにチェックアウトする"などと警告が出るが無視すればよい。

f:id:ai_gaminglife:20180731103544p:plain

 続けて右クリック→SVNコミットを選択し、プロジェクト全体をリポジトリにコミットする。

ソースコントロールに接続

 ここまで終わったらUE4でプロジェクトを開く。ツールバーからソースコントロールを開き、

  • プロバイダを「Subversion
  • Repositoryを「ブラウザで確認した時に使ったレポジトリのURL」
  • User Name、Passwordを「sudo htpasswdで設定したユーザー名、パスワード」

として設定を承認する。

f:id:ai_gaminglife:20180731103616p:plain

 画像のようにソースコントロールの横に緑色のアイコンが表示されたら成功。

f:id:ai_gaminglife:20180731103634p:plain

他のPCと共同作業する時

 他のPCと共同作業したい時はまず、VPS上のUbuntuで以下のコマンドを叩く。

$ sudo htpasswd -m /etc/apache2/dav_svn.passwd username
$ sudo service apache2 restart

 これでユーザーを新規追加することが出来る。共同作業するメンバーにそれぞれこのユーザーを割り振るとよい。

 共同作業に参加する人はエクスプローラーのどこでもいいので右クリック→SVNチェックアウトを選択。そうすると自動的にリポジトリに上がっているプロジェクトがダウンロードされる。

 ここまでできたら後はプロジェクトを起動して同様にソースコントロールに接続するだけ。

まとめ

 VPS契約というお金のかかる方法だが、自宅でサーバ構築して運用する時も電気代がかかることを考えればそこまで差はないと思う。

 UE4でチーム制作をする時は是非この方法で上手くソース管理をしてみてほしい。