Alpaca Tech Blog

ゲーム作る系 草食動物の備忘録

【Unity】Camera.mainにアクセスしようとすると例外が発生する

例外が発生

NullReferenceException: Object reference not set to an instance of an object
PlayerTest.Update () (at Assets/Game/PlayerTest.cs:32)

ソース

var cameraForward = Camera.main.transform.forward;

Camera.mainにアクセスしていました。

 

原因

カメラのTagがUntagged

f:id:alpacatech:20180820194905p:plain

 

tagをMainCameraに変更

f:id:alpacatech:20180820194840p:plain

 

Camera.mainアクセスが問題なくなりました。

 

【Unity】PC版作成時のアイコンやスプラッシュスクリーンの設定

PC版を作成した際のバナーやアイコンとかの設定メモ

 

概要

f:id:alpacatech:20180806041615p:plain

スプラッシュスクリーンは、このような起動時のダイアログ画面です。

そこで表示されるバナー解像度等の情報がなかったので調べた&書きました。

 

 設定場所

アイコンやバナーは以下の場所を設定する必要があります。

メニューの

Edit->Project Settings->Player

f:id:alpacatech:20180806034215p:plain

 

 

 

 

 

モジュールのアイコン

f:id:alpacatech:20180806033854p:plain

このようなexeのアイコンです。

 

Default Iconを設定します。

解像度別は、Iconタブで確認できます。

 

 

 

 

 

起動時のダイアログ

f:id:alpacatech:20180806041615p:plain

このような起動時の解像度やInputの設定変更するダイアログです。

 

バナー設定と解像度

SplashImage→

Application Config Dialog Banner(バージョンによってはConfig Dialog Banner

です。

 バナーの解像度は432x163がフィットするらしいです。

 (Mac版未確認)

バナーが汚くならない為の対応

そのままの設定の場合、引き延ばされたり圧縮で劣化して表示されます。

設定を変更します。

TextureType  ... Sprite2DでNPOT(2のべき乗拡大を廃止)

Compression ... None(非圧縮)

f:id:alpacatech:20180806040439p:plain

 

 

※実際に1ドット間隔のグリッド画像を432x163で表示してみました。

f:id:alpacatech:20180806033120p:plain

 引き延ばされることもなくきれいに表示されています。

たぶんこれであってる。

 

 

起動時にダイアログを表示したくない

もしダイアログを表示したくなければ

Display Resolution Dialog を 変更します。

Disabled (無効)

Enabled (有効)

Hidden by Default (デフォルトで非表示。起動時に Alt キーを長押しした場合にのみダイアログが表示される

f:id:alpacatech:20180806040909p:plain

 

非表示時の解像度は、他の設定を変更します。

スタンドアロンのプレイヤー設定 - Unity マニュアル

docs.unity3d.com

 

 

 

起動時のロゴ

Logosで設定。

アニメーションの時間設定や色を指定できます。

[Preview]ボタンで確認できます

 

  

 

参考

公式の設定マニュアル version 2018.1

docs.unity3d.com

 

 

解像度について

what is the config dialog banner splash image size - Unity Answers

 

 

【Unity】using System.Windows.Formsを利用する(Windowsモジュール限定)

概要

UnityでWindowsのフォームやダイアログを利用する場合、

using System.Windows.Forms;

を宣言すると利用できます。

 

エラー

そのまま宣言しても、

The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference?

というエラーが出ます。

 

System.Windows.Formsを利用するには

1.Api Compatibility Levelを .Net 2.0にする

メニューのEdit -> Project Settings -> Player -> Other Settings

 

f:id:alpacatech:20180725010542p:plain

Api Compatibility Levelを .Net 2.0にします(Subsetじゃないほう)

 

2.PluginsフォルダにSystem.Windows.Forms.dllをコピー

AssetsフォルダにPluginsフォルダを生成します。

f:id:alpacatech:20180725010511p:plain

 

C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0

から、

System.Windows.Forms.dll
をコピーします。

必要であれば、
System.Drawing.dll
System.Data.dll

等もコピーします。

 

これで利用できます。

 

おまけ

ファイルを開くダイアログ
    var dlg = new OpenFileDialog();
    dlg.Filter = "json(*.json)|*.json|All files(*.*)|*.*";
    dlg.CheckFileExists = false;
    if (dlg.ShowDialog() == DialogResult.OK)
    {
        //  ...
        MessageBox.Show(dlg.FileName);
    }
ファイルを保存ダイアログ
    var dlg = new SaveFileDialog();
    dlg.Filter = "json(*.json)|*.json|All files(*.*)|*.*";
    dlg.CheckFileExists = false;
    if (dlg.ShowDialog() == DialogResult.OK)
    {
        //  ...
        MessageBox.Show(dlg.FileName);
    }

 

 

参考

設定

scribble/README.md at master · i-saint/scribble · GitHub

 

ファイルを開くダイアログ

[Unity] OpenFileDialogをWindowsアプリ(exe)で使う

 

 

 

 

【Unity】PackageManagerでUpdateが適応されない

 結論

根本的な理由がわからなかったので、

キャッシュ消して再インストールしました。

 (普通の再インストールでは駄目だった)

 

概要

共同で作成しているプロジェクトで、

自分の所だけPostprocessing関係で例外が出まくる。

 

PackageManager確認したら最新じゃなかったので

f:id:alpacatech:20180707143600p:plain

最新版にUpdateしようと 

Updateボタンを押しても反映されませんでした。(2.0.7にならない)

 

jsonファイル等を触ってみたり色々試したけど解決できませんでした。

ネットにも情報がなかったりと解決策が見つからなかったので、

再インストールすることにしました。

(5.XX時代から上書きインストールを重ねていたフォルダ)

 

再インストール

普通にインストールしなおしだと解決しなかったので、

色々綺麗にしてインストールしなおしました。

 

手順

アンインストール以外にキャッシュ消したりしているので自己責任でお願いします

アンインストール

f:id:alpacatech:20180707144450p:plain

Assetのキャッシュデータを削除

C:\Users\[USER_NAME]\AppData\Roaming\Unity\
C:\Users\[USER_NAME]\AppData\Local\Unity\

を削除(念のためリネーム)

 

再インストール

インストーラーでインストール。

 

インストール後

f:id:alpacatech:20180707144626p:plain

2.0.7になっていました。

 

 

 

 

 

 

 

【Unity】Unity1Weekに参加しました【ゆによんく】

1週間でゲーム作るジャム、unity1weekに参加しました。

Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

f:id:alpacatech:20170905012756p:plain

1週間でテーマに合わせたゲームを作るイベントです。

 月曜日にテーマ発表、日曜20:00に一斉公開。

 

前回は、体調不良(眼が凄いことになってた)ので断念。

今回は何とか参加できました。

今回のテーマは、「ギリギリ」です。

 

作ったもの 

画面はこんな感じ。

 

ここでプレイできます(PCのみ)

ゆによんく | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

 

動機

定期的にミニ四駆作りたい衝動がでるのですが、走らせるスペースがありません。

「せや、Unityで作ったらええんや。」

「ギリギリなんてこじつけや。」「わいはこれやりたいんや!」

ということで作り始めました。

作成時間はあんまり取れる予定なかったのですが、

プロトタイプはすぐにできたのでGO。

 

地獄の始まり。 

作り方

車の動き

Rigidbodyで頑張ろうとしたら

WheelColliderという便利なものがありました。

docs.unity3d.com

簡単に説明すると、トルクに値を入れると

自動車のタイヤのように勝手に進んでくれるColliderです。 

 

コース

最近無料になったProBuilderです。

Unity2018だと標準で入っています。(PackageManagerから追加)

チュートリアル途中までしかやってないので、

そんなに詳しくないですがコース作るぐらいはいけました。

以下で、いろいろ書いています。

alpacatech.hateblo.jp

カーブはアーチを組み合わせて作りました。

あとは、プレハブ化してミニ四駆のコースを組み立てる感じ。

 

欠点

これだと、つなぎ目に壁ができるので、

接続面を消さないとめり込んだ時壁に当たります。

消しても横の面は連続していないので、

頂点をつなぎ合わせる対応も必要。

 

※2018/06/14 追記

つなぎ合わせ作成プログラムできました。たぶん。

とりあえずSTAGE05-08として追加しました。

 

 

パーツのデータベース

G2Uというアセットを使いました。

GoogleSpredSheetに書いたことそのままアクセスできるので便利です。

説明、値段、重さ、空気抵抗、その他色々

f:id:alpacatech:20180611023914p:plain

こんな感じ。

string,int,float等、型も指定できるので、プログラムで使うときすごい楽。

読み直しが削除挟むので面倒ぐらい(よくわかってない)

 

参考

www.asset-sale.net

 

その他のアセット

 

タイトルロゴのアニメーション

 

ポストエフェクト。

ブルームかけたり、ジャギジャギ消去

 

 

終えて

つらかった事 

・謎の当たり判定。

結果がころころ変わったり、WebGLでもちょっと違ったり。

物理エンジンと仲良くなりたい。

 

WebGLが動かなかった。

定期的にWebGL実行はチェックしていたのですが、

5時間前ぐらいから動かなくなりました。

急にOutOfMemoryみたいなエラーがたくさん出て(3種類ぐらい)

これがなかったら間に合っていたのに、

結果3時間超えの遅刻。くやしい。

 

解決方法は、

プロジェクト作り直したり、OS再起動で治りました。

なぜ発生したのかよくわからないまま解決(たぶん再起動)

 

 

反省

・アイコンの説明一切ない、何をしたらいいのかわからない。

あまりの投げっぱなしな作りに、楽しめる人がいるのか不安になったのですが

楽しんでくださる人がいたので安心しました。

けど、もう少し説明が必要だと思います。

良かったこと

・積みアセットのG2Uを活躍できた。

・物理とか色々詳しくなれた。

今回もたくさん経験値もらえました。

 

あとTwitterでいいねたくさんもらえました。

unityroomでプレイしてくれた方々にも好評価。

ありがとうございます。うれしい。

 

今後作りこむ(スマホで出す)なら

・説明追加。[?]ボタンで、各アイコン説明とか。

チュートリアル。ローラつけるぐらい。

・カメラ処理を作る。

・効果音をあてはめる

・BGM数種類

・ポストエフェクト

・パーツ追加、値調整

重量級ボディが息してない

・コースの増加

ジャンプ台とかループするやつ作りたい。

・お気に入りパーツ組み合わせ記憶

・ベストタイム時のパーツも記憶

・各コースに目標タイムを設ける

 

*お金周りは迷っています。

・コースを走らせる毎に賞金がもらえる。

クリアする意義、実質お金無制限。

・パーツは買い切り

・ランキングは、無制限と1000円までの2種類

縛りプレイヤーも楽しめる。

 

・ゆるよんくに改名?

ユニティや、ミニ四駆ガチ勢に怒られるの怖いw

 

と色々やること出てきます。

  

 最後に

大変でしたが、

いろいろ勉強になったし楽しかったです。 

今までの積み重ねでだんだん効率よく作れるようになっているのを実感できました。

やっててよかったunity1week

またやりたいです。

 

 

やっぱり欲しいミニ四駆

 

 

【VisualStudio】パラメーター "basePath" を相対パスにすることはできません。対策

DLL開発等で、

実行時に「作業ディレクトリ」を指定する場合があります。

f:id:alpacatech:20180612151754p:plain

作業ディレクトリに ..\..\bin 等の相対パスを入れて、

(<参照…>ボタンを押して設定しても相対パスになる)

 

実行すると、

f:id:alpacatech:20180612151453p:plain

パラメーター "basePath" を相対パスにすることはできません。

というエラーが出ます。

 

対策としては、

..\..\bin 

$(ProjectDir)..\..\bin

に変更すると絶対パスになるので動きます。

$(ProjectDir)は、プロジェクトのフルパス。

 

ちなみに、

フォルダが存在しな場所を指定すると

~は有効な作業ディレクトリではありません。

f:id:alpacatech:20180612152252p:plain

と出るのでパスを見直してください。

 

【Unity】ProBuilder備忘録

Unity2018から標準搭載のProBuilderについて備忘録です

 

インストール方法

Window→PackageManager→All→ProBuilder→Install

*Unity2018以上

 

モデリングチュートリアル

モデリング入門動画(日本語)

UnityJpanさんの動画

www.youtube.com

家、樽、葉っぱ、樹木、リフト、島等を作成。

動画なので細かい操作の確認や作業が

自分のペースで勉強できます。

 

プリンを作る

hakonebox.hatenablog.com

 入門向けで美味しいプリンの作り方。

 

 

ショートカットキーまとめ

Prototype(ProBuilder)のショートカットまとめ

 

 

メモ

ProBuilderのウィンドウを出す

メニューのTools->ProBuilder->ProBuilderWindow

アセットのウィンドウはWindowにありがちだけど違う。

 

パレットで頂点カラーを編集したい

VertexColorsの+

f:id:alpacatech:20180531183436p:plain

Editor-> Pallet ->Open Vertex Editor

 

ツールバーのメニューにVertexColorメニューがあるけど別みたい

 

色は反映するけどガイドラインみたいなのが残る

f:id:alpacatech:20180531185148p:plain

 ガイドラインが残ってる面を選び、

[Alt+2]ボタンでマテリアルを選ぶと

そのマテリアルだけで適応される。

 

f:id:alpacatech:20180531185528p:plain

 

選択モードでメニューが変わる

f:id:alpacatech:20180531185922g:plain

モデル選択、頂点選択、線選択、面選択でコマンド内容変わるので

コマンドが無いよーって場合は、現在のモードを確認。

 

 

ファイル出力

objファイル等でExportできます。

他のモデリングソフトで調整できるかも

f:id:alpacatech:20180531193244p:plain

 

 

 

何かあったら追記していきます