Roba Memo - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

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にする。 結果 …

Error : Failed to create agent because it is not close enough to the NavMesh

エラー内容 解決策 参考にしたサイト様 エラー内容 NaviMeshを使っていて、エージェントをスクリプトで配置しようとしたら、黄色い警告文が出た。 Failed to create agent because it is not close enough to the NavMesh 機械翻訳だと それがNavMeshに十分…

ドラッグする時にオブジェクトがカーソルに自動でセンタリングしないようにする

Unityでゲームオブジェクトをドラッグさせると、動かした瞬間にゲームオブジェクトがカーソルの位置に移動してしまう。 大きい画像を少しずつドラッグさせたい場合は、困る。 ということで、自動センタリングをさせない方法をメモ。 コード ゲームオブジェク…

CommandInvokationFailure: Failed to re-package resources. See the Console for details.

AdMob入れてビルドしようとしたら、このエラー。 CommandInvokationFailure: Failed to re-package resources. See the Console for details. ・SDK入れ直す ・SDKバージョンを変える ・JDK入れ直す ・JDKバージョンを変える ・AdMob入れ直す ・AdMobパッケ…

ScriptableObjectを使ってみた

ScripttableObjectとは 継承クラスを作る [CreateAssetMenu] [System.SerializableAttribute] データを使う方法 リストの読み込み パラメータの取得 メソッドを追加してみる メソッドの呼び出し方 注意点 ScripttableObjectとは 公式マニュアルによると・・…

呼び出し元のクラスやメソッドを知りたい

やりたいこと 方法 注意点 参考にしたサイト様 やりたいこと タイトル通り、呼び出しものとクラスやメソッドを調べたい。 方法 下記のコードを書くだけ。 System.Diagnostics.StackFrame caller = new System.Diagnostics.StackFrame (1); //メソッド名 Debu…

Transform.Rotate()が途中で変になる

やりたいこと 問題点 解決策 やりたいこと ゲームオブジェクトをクリックで時計回りに30度ごと回転させ、現在の回転角度を知りたい。 問題点 obj = 回転させたいオブジェクト rot = Z角度を保持する変数 GameObject obj; float rot; obj.transform.Rotate …

画像フォーマットを一括で設定したい【最新】

この記事を現バージョンに更新 robamemo.hatenablog.com 上の方法だと、古いメソッド使わんといて!って怒られるから、対処してみた。 コード Editorフォルダに以下のスクリプトを作成するだけ。 using UnityEngine; using UnityEditor; public class Custom…

パラパラアニメーション コルーチン編

これのコルーチン編 robamemo.hatenablog.com 仕様 コード 設定 開始コード 仕様 ・Image単体をprefabにしてCanvasに配置し、再生後はフェードアウトしてDestroy()する ・スプライトはリソースから連番で読み込む コード using System.Collections; using Sy…

yield return null と WaitForEndOfFrame の違い

どちらも、次のフレームで再開という感じだけど、タイミングが微妙に違うみたい。 Unity - マニュアル: イベント関数の実行順 ここにある、関数のフローチャートを拝借。 該当部分を抜粋 たぶん、これが再開される位置なんだと思う。 yield return nullは、…

コルーチン 中断って何を?

前記事からの続き。 robamemo.hatenablog.com おさらい ◯秒待って処理を再開したい サンプルコード 出力結果 中断て何を? おさらい yield return ナンチャラ =ナンチャラとタイミング合わせるからちょっと中断するねという意味。 さて、この中断って、何を…

yield retuen null って何さー?

Updateで処理すりゃええやん〜♪って思ってたんですが、記述が多くなると読み辛くなる → バグ増える。 ということで、イキって(?) コルーチン使ってみた。 基本の形 Updateみたいに毎フレーム実行する yield retuen null って何さー? 基本の形 StartCoroutin…

Raycastによるマウス座標との当たり判定

はまったのでメモ。 レイキャストについて マウス座標からRayを飛ばすには 名前でターゲットを探す方法 Physics.Raycast ()のパラメーター サンプルコード レイヤーマスクで探す方法 Physics.Raycast ()のパラメーター レイヤーマスク サンプルコード レイキ…

シートごとに.assetを作成した場合 [ Unity-Excel-Importer-Maker ]

robamemo.hatenablog.com これの続きです。 上記記事では、エクセルファイルを丸ごと.assetにしたけど、今度は分けてみる。 エクセルファイルをインポートする ファイルをリソースに移す 生成されたクラスの構造 データを参照する エクセルファイルをインポ…

エクセルデータをUnityに読み込みたい [ Unity-Excel-Importer-Maker ]

なんと!それが可能な神ツールがございました♪ tsubakit1.hateblo.jp ありがたく、使わせて頂きます。 ということで、使い方をメモ。 ダウンロードとインポート エクセルファイルを用意する 注意点 : 余白行は含まないこと! 注意点 : 拡張子は.xlsにするこ…

親の回転を無視したい

親の回転角度を引いて相殺すればええやん?って思ったら、簡単にいかなかったのでメモ。 やりたいこと オブジェクトの相関図 コード 実行結果 考え方 相殺の仕方 逆方向について やりたいこと 親(3Dゲームオブジェクト)が回転しても、子(スプライト)が…