ロバメモ - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

CanvasのGameObjectをmousePositionに追従させたい

あんまり自信ないかも。 いや、自信満々で書いた記事などないけど。笑 やりたいこと やり方 考え方 座標の違いを解消する 座標の起点の違いを解消する やりたいこと お題通り、キャンバスに配置した画像をカーソル追従させたい。 やり方 以下のコードを追従…

Contentの高さをリスト要素に合わせるScrollViewの設定方法

Step1 : Contentにコンポーネントを追加 Vertical Layout Groupを追加 Content Size Filterを追加 Step2 : Contentの子にレイアウト用のGameObjectを作成 Step3 : レイアウト用GameObjectにコンポーネントを追加 Content Size Filterを追加 Vertical Layout …

Unity(C#)+FirebaseをWebGLで使いたい②:ログイン編

おさらい やりたいこと 1:コンソールの設定 ログイン方法を設定 サポートメールを設定 確認メールのテンプレートを設定 2:HTMLにSDKを追加 謎のパス "/__/" 初期設定について deferの意味 3:メアドを入力して確認メールを送信するまで ローカルストレ…

Unity(C#)+FirebaseをWebGLで使いたい①:環境整備編

やりたいこと 仕組み Firebaseを使える環境にする 1:Firebase CLIをインストールする 2:Firebaseにログイン 3:フォルダを作成する 4:コマンドで初期設定をする localhostで実行する サーバーを終了するには デプロイ 本番サイトを停止 やりたいこと …

Dropdownのリスト要素をスクリプトで設定したい

やりたいこと コード やりたいこと タイトル通り、ドロップダウンの要素をスクリプトから設定する方法。 忘れるのでメモ。 コード 例)1〜99の数字を入れる場合 Dropdown.options.Clear(); //要素を削除しておく for (int i = 1; i <= 99; i++) { Dropdown.o…

数字を3桁区切りにしたい

忘れるのでメモ。 int price = 100000000; string.Format("{0:#,0}円", price); 以上。

選択されているゲームオブジェクトを取得するには

やりたいこと お題通り、選択されているゲームオブジェクト(ボタン)を取得したい。 コード using UnityEngine.EventSystems; GameObject obj = EventSystem.current.currentSelectedGameObject; 以上。

UI Mask処理の際の注意点

マスクの方法 問題点 原因 結論 マスクの方法 Canvasに配置した画像をマスク処理する場合 Image(マスク範囲画像)←ここにMaskコンポーネントをアタッチ └ Image(マスクしたい画像) 問題点 見辛い画像だけど、右側はマスクできていない。 原因 マスクの範囲…

現在日時を取得するときの不正対策

やりたいこと 参考サイト様 コード 呼び出し方法 ※2019/06/30 コード修正 やりたいこと 端末から日時を取得する場合、端末の時刻を操作されると狂ってしまう。ということで、端末以外から日時を取得したい。 その方法を叶えてくれるのが NICT(日本標準時(JS…

float値の比較は危険だった

二つの座標を比較した時にはまったのでメモ。 問題点 そのままfloat同士で比較 10掛けて切り捨ててみる(float型のまま) それをintにしてみる 文字列しにしてからintにしてみる エラー対策 結論 等しいかどうかを調べる 問題点 そのままfloat同士で比較 Ray飛…

カメラを領域内でドラッグ移動させたい&カメラのズーム処理(2D)

やりたいこと ドラッグ処理 1:カメラにコライダーを追加する カメラがX90度回転している理由 2:スプライトを配置 3:Rayを飛ばすクラスを作る 4:ヒット判定とドラッグ判定 ドラッグ判定が2重チェックな理由 5:ドラッグ処理を追加する ドラッグ領域…

コルーチンでTime.timeScaleを使ってはまったこと

問題点 再生速度をTime.timeScaleを使って変更しているため、コルーチン内で下記のような処理をしていたら、Time.timeScale=0のときにWaitForSeconds()に入るとTime.timeScale=1に戻ってもコルーチンが再開されなかった。 float walk_speed = 0.1f; IEnumera…

インスペクターのリストを並び替えたい

やりたいこと ReorderableInspectorを入手 インポート 使い方 やりたいこと インスペクター上でリストの要素が入れ替えられる神ツールがあったので、遠慮なく使わせていただきます♪ ↓ リスト要素がドラッグで入れ替え可能に! ReorderableInspectorを入手 入…

Gameウィンドウのスクリーンショットを撮りたい

やりたいこと スクリプトを作成 コード 画像の保管場所 画像の名前 スクリーンショットの撮り方 ショートカットキーを変更したい 解像度の設定 使用したメソッド 参考にしたサイト様 やりたいこと OSのスクリーンショット機能で撮影していたけど、切り取りし…

'IndexOf'はカルチャ対応で、StringComparison 引数がありません

Visual Studioを使いだしてから、タイトル内容 " 'IndexOf'はカルチャ対応で、StringComparison 引数がありません "の注意が出るようになった。 気になったので、調べてみた。 エラー内容 StringComparisonって何? 省略した場合は、どれになるの? 対処方法…

PlayerPrefsを使ったWebGLをphpに置いた時に生じた不具合と回避策

サイトの仕組み 生じた不具合 セーブデータファイルが作成される場所 回避策 サイトの仕組み 私のサイトはphpで作成している。 といっても、高度なことはできなくて、ただヘッダー・フッター・メニューなどを分けて読み込むだけの単純なもの。 <div id="right_container"> </div> //サイト内…

MonoBehaviourと他のクラスを多重継承したい場合

スーパークラスの書き方 サブクラスの書き方 スーパークラスの書き方 ・MonoBehaviourを継承したスーパークラスを作成する。 ・virtualキーワードをつけてStart()などを作成しておく。 ・アクセス修飾子もサブクラスで使えるようにしておくこと。 using Syst…

WebGLからJavascriptの関数を呼び出す

※Unity5.6以前の古いやり方です。 外部リンクを貼りたいけど、URLが変更する可能性がある場合、逐一ビルドするのは面倒。 ということで、html側からjavascriptでなんとかならんか?と思って調べてみたら、なんとかなった♪ WebGL側の処理 Application.Externa…

Game scripts or other custom code contains OnMouse_ event handlers. Presence of such handlers might impact performance on handheld devices.

エラー内容 Game scripts or other custom code contains OnMouse_ event handlers. Presence of such handlers might impact performance on handheld devices. Android / IOS を選んでビルドした際に出たエラー。 OnMouse~イベントを使っていると出るらし…

C# アクセス修飾子

※アセンブリ=ブロジェクト、コンテナーであるクラス=自クラス、と勝手に解釈してます。 アクセス修飾子 同じプロジェクト 別のプロジェクト 自クラスサブクラス別クラス サブクラス別クラス public ○○○ ○○ protected internal ○○○ ○× internal ○○○ ×× prot…

Sprite(またはコライダー)をクリックしたい IPointerClickHandler編

説明 Camera設定 CameraにPhysics Raycasterコンポーネントを追加する EventMaskを設定する Sprite設定 コライダーを追加 レイヤーをEventMaskに合わせる EventSystemを追加 コード 実装できるイベントの種類 PointerEventData 参照したサイト様 説明 Sprite…

C# 文字列から数値だけを抜き出す方法

やりたいこと コード 例 使用したメソッド パラメーター 戻り値 数字以外という正規表現 ちなみに、文字列を数値に変換するなら やりたいこと 文字列から数値だけを抜き出したい。 オブジェクトの名前から数字だけ取りたい時に使えそうなのでメモ。 コード R…

Splitの使い方

いつも忘れちゃうのでメモ。 Splitで区切ると配列になる。 変数に配列を保持するもよし、 string str = "a_b_c"; var array = str.split('_'); Debug.Log(array[1]); 一部だけ抜き取りたいなら、そのまま抜き取りたいキーを書くのもあり。 string str = "a_b…

GetComponent()以外で他のクラスを参照するには?

やりたいこと MonoBehaviourを継承しない場合 MonoBehaviourを継承する場合 やりたいこと 他のクラスを参照するとき、ゲームオブジェクトにクラスをアタッチして、GameObject.Find("object_name").GetComponent<MyClass>()といった感じでアクセスする方法多いんだけど</myclass>…

移動距離が変わっても、指定した速度で等速直線移動させたい

やりたいこと 使うメソッド コード 到達したら消滅したい場合 やりたいこと ・移動距離が変わっても、指定した速度で直線移動し、到達したら止まる。 魔法師の魔法攻撃処理で悩んだのでメモ。 全体の移動距離から1フレームの移動距離(つまり速度)を割り出…

Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)

エラー内容 Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?) 原因と対処方法 OnDestroy時にInstantiateでGameObjectを配置するとでるエラー。 OnDestroyではInstantiateしないようにする。 例 …

シングルトンクラス

やりたいこと シーンをまたいで変数値を保持するクラスを作りたい。 シングルトンクラスを作る using UnityEngine; using System.Collections; public class Global : MonoBehaviour { static public Global instance; void Awake(){ if (instance == null) …

Error : You are trying to create a MonoBehaviour using the 'new' keyword.

You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all MonoBehavior…

テキストの文字に輪郭線を入れる

UI

やりたいこと やり方 やりたいこと ↓ やり方 TextにShadowコンポーネントを追加する。 UI - Effects - Outline 以上。

エージェント同士を重ねて配置したい

問題点 解決策 問題点 NavMeshでエージェントを複数配置したとき、エージェント同士が回避しあうのでドラッグで位置設定したいときにお互いに押し合ってしまう。 解決策 Nav Mesh Agentコンポーネントの Obstacle Avoidance - Quality をNoneにする。 結果 …