Alpaca Tech Blog

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

【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

 

 

 

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

 

 

【雑記】家の中を自動化計画【スマートホーム】

センサーやらスマホとかの家電で家を色々自動化していってます。

細かい事でも毎日利用するものなら数秒の手間でも大きく変わっていきます。

買ったやつを紹介していきます。 

*商品写真クリックでshopに移動

 

 

AIスピーカー

Alexa

「アレクサ、○○」と語りかけるだで、いろいろ聞いてくれます。

お金は稼いできてくれません。

 

私がよく使う利用方法としては、 

・天気予報(気温)を聞く

・赤ちゃんに聞かせる音楽を再生(オルゴールみたいなやつ)

・アルパカについて調べる

他の人は、

・ニュースを聞く

・設定した音楽流す

等やっているみたいです。

「歌って」とかでも対応してくれます。

 

 自分でスキル作ったりIFTTTとかで連携できたりもします。

 

スマート家電と組み合わせるとより便利になるけど まだ活用できていません。

いるとたまに便利です。

 

セサミ スマートロック

スマホで鍵の開閉を行えるやつです。

帰宅時にオープンやオートロックもできるみたい(まだ試してない)

開閉ログ(自動or手動)とかも見れます。 

 

公式

セサミ スマートロック | CANDY HOUSE, Inc. JAPAN – CANDY HOUSE JAPAN

 

公式動画

  

パールホワイト、マットブラック、シャンパンゴールド、シャンパンシルバー。

の4種類(2018/06現在)

 

bluetooth単体版   /   bluetooth+wifiセット版 

 

本体はBluetooth対応。

Wifiアクセスポイントは別売り。(セットだと1000円ぐらいお得)

違いは、 amazonで細かく記載されています。

https://www.amazon.co.jp/dp/B076WXCRZ4/ref=twister_B078Y7LFRH?th=1

f:id:alpacatech:20180605150031p:plain

 

wifi版は、鍵の閉め忘れを気にする人は安心材料になるかも。

 

「セサミ」は、オープンセサミ(開けゴマ)から来てるみたいです。

 

 

ソープディスペンサー

[液体タイプ] Topbasic【改良版】オートソープディスペンサー

 

液体タイプです。

ロートが付属しているので液体石鹸入れるの楽でした。

石鹸の出る量は2段階です。

乾電池式。

2000円ぐらいで購入。

 

市販の詰め替え利用できます。

 

これ利用しました。

 

水道も自動化したい。

 

 

[泡タイプ] Lantoo ソープ ディスペンサー

 

こちらは泡タイプです。

中身が見えます。

こちらも市販の詰め替えで問題なかったです。

乾電池式。 

2500円ぐらいで購入。 

 

電球

ALED LIGHT LEDセンサーライト

 

人感センサーで電気がつきます。

電気代抑えられるし、電気消した消してないで喧嘩することもなくなるはず。

 

サイズ間違えた 

だったけど、サイズ間違えました/(^q^)\

ソケットサイズE17です。

日本のよくある電球サイズはE26です。

これから買う人は注意してください。

 

 変換器買いました。

 今は、問題なく動作しています。

  

E26                     / E17 

 

 

 

体重計

Nokia スマート体重計 Body Cardio ホワイト 

 

wifi接続することで、体重や体脂肪率等を管理ページにアップロード

体重等の増減グラフをスマホ等で確認できます。

多人数で利用しても、識別してくれます。

(近い数値の人同士だとどうなるかわからない)

 

※これを買うだけでは痩せれません。 

 

  

掃除機

アイロボット ロボット掃除機 ルンバ691 R691060

まいどおなじみルンバ。

私のは、これより古いタイプなので新しい機能はわかりません。

自分で充電しに行ったりします。

 

ルンバが動けるような床にしないと掃除途中で動けなくなります。

・物を置きすぎない

・段差作らない

・ケーブル出しっぱにしない

ルンバの為に掃除する必要があります^q^

ワンルーム暮らしの時はよく動いてました。

 

 

【python】VisualStudio2017のpythonでopencv

インストール手順

Python3.6を右クリックして

Pythonパッケージのインストールを選び

f:id:alpacatech:20180531134845p:plain

 

pip installを行うウィンドウが出るので、

opencvで検索。

opencv-python(...)クリックでインストール。

*numpyとセットでインストールされました。 

f:id:alpacatech:20180529183713g:plain

 *ViusalStudio2017 15.5.6で確認

 

OpenCVサンプルコード

画像読み込み+表示

import numpy as np
import cv2

img = cv2.imread('test.jpg')  #test.jpg読み込み
cv2.imshow('test', img)       #imgをtestウィンドウで表示
cv2.waitKey()                 #何かキーを押されるまで待機

 

 test.jpgが読み込まれウィンドウで表示されます。

キーが押されると終了

 

画像生成

img = np.zeros((480, 640, 3), np.uint8)  # 640x480のRGB画像生成

 

 

画素に直接アクセス

for y in range(img.shape[0]):
    for x in range(img.shape[1]):
        img[y,x,0] = 0

↑全部の画素のBに0を代入

 img[y座標,x座標,チャンネル] = 0~255

チャンネルは、0...B / 1...G / 2...R