三流豆腐。

三流のゲームプログラマ。C/C++/C#/Objective-C/python/技術向上を目指します。

【Unity】クリック箇所にuGUIがあるか判定する……そして……。

 

使用バージョン:Unity 2018.3.12f1

目次:

 

やりたい事

・クリック時に特定のuGUI以外だったら処理をさせない。

今回は赤枠のimage以外だったら処理させないようにします。

f:id:tofu_doon:20190421233017p:plain

 

順序

①Raycastの結果を受け取るListを用意する

②PointerEventDataの変数にクリック時のマウス座標を入れる

③RaycastAllを使用する

 

最初、Physics2D.Raycast使おうと思ってましたが、

uGUIには使えないみたいですね(>_<)

 

 使用方法

PointerEventData型の変数のpositionにマウスの座標を入れて、

RaycastAllの引数にPointerEventData型の変数とListを入れれば、

渡したListにRaycastにヒットした結果が入ってきます。

f:id:tofu_doon:20190421235221p:plain
結果のListからgameObjectにアクセスできるから大体の処理は出来そう。

以下は個人的にやりたかった処理。

f:id:tofu_doon:20190421235329p:plain

子オブジェクトがクリックされたかの確認というのは、

f:id:tofu_doon:20190421234758p:plain

Board以下にImage以外にも動的に追加されるので、

Boardの子オブジェクトをforeachで回してます。

ちなみにthisはBoard。

 

おまけ

f:id:tofu_doon:20190421235558p:plain

綺麗じゃないけどImage以外のところだったら処理しないようにはできたんだけどね!

学生の頃割とやってた書き方('ω')w

 

【Unity】配列 × enum × SerializeField

 

Unityでめちゃくちゃお世話になるSerializeField。

最近新たな使い方を見つけた!

配列、enum、SerializeFieldを組み合わせると……。

f:id:tofu_doon:20190408235307p:plain

 

Inspectorから要素の中身をタブメニューで変更できる!

 

f:id:tofu_doon:20190408235440p:plain

 

f:id:tofu_doon:20190408235459p:plain

 

普通にSerializeField使ってたけど、

配列、ListもInspectorから動的に変更できるの良いね。

積極的に使ってこー!

【Unity】オブジェクトにスクリプトがアタッチできない原因

Unityでオブジェクトにスクリプトをアタッチしようとして、

Can't add script と出る原因。

f:id:tofu_doon:20190310122437p:plain

 

 

スクリプト名とクラス名が一致していない

f:id:tofu_doon:20190310122530p:plain

 

f:id:tofu_doon:20190310122545p:plain

 

スクリプト名をリネームしたらクラス名も必ず変更しよう。

 

 

 

スクリプト内にコンパイルエラーがある

f:id:tofu_doon:20190310122817p:plain

 

f:id:tofu_doon:20190310122849p:plain

 

この時恐ろしいのは、いずれかのスクリプトに1つでもコンパイルエラーがあると解決するまで全てのスクリプトがアタッチできなくなる事。

スクリプトの行数が多いほど気づきづらい。

先にスクリプト書き上げて、後からアタッチを行うときはコンパイルエラーがないかチェックしよう。

 

pyinstallerでexeが作れない!?

 

python3.7.2を導入した時のこと。

 

適当にサンプル作って、exeも作ろうと思い、

 

作り方をググりたどり着いたのが、

 

pyinstaller

 

早速、インストール。

 

pyinstaller Test.py --onefile --noconsole

 

と打ち、使ってみようとするも

 

Value Error:script 'パス/Test.py' not found

 

???

 

f:id:tofu_doon:20190307014116p:plain

 

あるんだよなぁ……。

 

1時間ほど調べた結果。

 

f:id:tofu_doon:20190307014354p:plain

 

デデドン。

 

f:id:tofu_doon:20190307014520p:plain

 

はぁ……(溜息

 

f:id:tofu_doon:20190307014718p:plain

 

exe化出来ました。

 

ちゃんとファイル名拡張子も表示しようね(戒め