chevron_left

メインカテゴリーを選択しなおす

cancel
トーフメモ https://tofgame.hatenablog.com/

主にゲーム制作に関わるTIPSをまとめるブログです。 Unity関係の記事多めです。 【e-mail】tofgames555@gmail.com

トーフメモ
フォロー
住所
未設定
出身
未設定
ブログ村参加

2019/04/27

arrow_drop_down
  • 【Unity】C#からPythonを実行する

    UnityとPythonをつなげてやりたいことがあります。 Pythonで機械学習して、Unityで作ったゲームの中で使う、そんな感じのことがしたいのです。 なのでまずはPythonをどうやって実行するか、というところが課題でした。 調べてみると案外あっさり見つかったので、手順とポイントをまとめていきます! 参考にしたサイトはページ下部にリンクを張るので、そちらを見てください! 実際にやること UnityのスクリプトからPythonの実行ファイルをたたいて結果を返す感じです。 なので、Pythonの実行環境がない人は先にそちらを構築してください。 Unity(C#)側 using System…

  • 【統計学】3秒でわかる期待値

    期待値とは 「起こることの数値」×「起こる確率」の合計です! 確率分布の真ん中がわかります。(外れ値がある場合感覚的に変な数値になる) 式 を確率変数、を確率関数、期待値を]とする。 期待値はのによる重み付き平均として定義する。 (1)確率変数が離散値 (2)確率変数が連続値 ロト6の期待値 ロト6の当選金額と確率はこんな感じです。 1等 1/6096454 2億円 2等 6/6096454 1000万円 3等 216/6096454 30万円 4等 9990/6096454 6800円 5等 155400/6096454 1000円 はずれ 0円期待値を計算すると、 期待値は90でした! ロ…

  • 【UnityC#】3秒でわかるデリゲート

    デリゲートとは メソッドへの参照 です! クラスみたいに参照して使えます。 書き方 自分でデリゲートを定義するやり方と、.NET Frameworkクラスライブラリに定義されてるAction、Funcを使うやりかたがあります。 自分で定義 delegateという修飾子を使うことでデリゲートを作れます。 引数なし、戻り値なし public delegate void TestDelegate1(); void Start(){ TestDelegate1 td1=PrintA; td1(); } public void PrintA () { Debug.Log("A"); } 引数あり、戻り値…

  • 【数学メモ】確率質量関数、確率密度関数の違い

    二つとも、確率を表す関数です。 この二つの違いは、確率変数(確率が与えられている変数)が離散的か、連続的かにあります。 確率質量関数 集合が数え上げられるものでできてているとき、加算集合といいます。 この加算集合の中の値をとる確率変数を離散的な確率変数と言います。 離散的な確率変数が確率をとるとき、 を確率質量変数といいます。 例えば、サイコロの確率などがこれで表現できます。 式が成り立つ条件 全ての確率質量関数は0以上で、確率質量関数を全部合計すると1になります。 確率マイナスにはならないし、確率全部足して100%以上にもならないという意味です。 確率密度関数 連続的な値をもつ確率変数を連続…

  • 【Unity】エディタ拡張でゲームを作る

    エディタ上で動くゲームをつくりました。かんたんなシューティングです。 ゲーム制作に疲れたときに遊べるのでおすすめです(?) youtu.be 制作のポイント Event.current OnGUIがどのイベントで呼ばれているか取得できる&キー入力などを検知できる EditorGUI.DrawPreviewTexture Rectクラスを使って位置が指定できるので、テクスチャを動かせる Repaint() Repaintイベントを呼び出せるので、Update関数内で使うと作ったゲームがエディタで動くようになる 動かし方 以下のソースコード6つをEditorフォルダに入れて、Resourcesフォ…

  • 【Unity】ArgumentException: Getting control 1's position in a group with only 1 controls when doing repaint が出たときの対処法

    Unityでエディタ拡張を作っていた時の話。 以下のようなエラーが出ました。ArgumentException: Getting control 1's position in a group with only 1 controls when doing repaint Abortingこのエラーは「OnGUI()の仕組み」が大きくかかわっていそうです。 OnGUI()は Layoutイベントと、Repaintイベント(もしくはKeyDownなどのイベント)がセットになって二回連続で呼び出されています。 LayoutイベントはLayoutの情報(ラベル等の位置、サイズ)などの計算が行われてい…

  • 【UnityEditor】EditorGUILayout.LabelFieldの文字をスクリーン中心に置きたい

    少し苦労したのでメモ書き。 GUILayout.Spaceを使って位置を中心にずらします。 さらにGUIStyleを設定してalignmentを中心にずらします。 void OnGUI(){ GUILayout.Space(position.size.y / 2); GUIStyle myStyle = new GUIStyle(); myStyle.alignment = TextAnchor.MiddleCenter; EditorGUILayout.LabelField("真ん中!",myStyle); } これでど真ん中に配置できます! なお、真ん中に表示させたいLabelFieldよ…

  • 【UnityEditor】オリジナルのエディタ画面(EditorWindow)の作りかた

    HierarcyビューやInspectorビューなどのことを、EditorWindowと言います。 EditorWindowは自分で作ることができ、その中にいろんな機能を作ることができます。 つくりかた EditorWIndowクラスを継承したクラスを作成します。 EditorWIndowクラスを使うためにUnityEditorをusingしてください。 EditorWindowTest.cs using UnityEditor; public class EditorWindowTest : EditorWindow { [MenuItem("Original/Test")] public …

  • 【数学メモ】ラグランジュの未定乗数法(2次元)

    または、を考えたいとき、 ラグランジュ乗数を導入して、ラグランジュ関数 を定義する。(1)または、(2)が成立するが存在するとき、 が成立する。 rakuten_design="slide";rakuten_affiliateId="185a3da0.516b4bcf.185a3da1.562c24b0";rakuten_items="ctsmatch";rakuten_genreId="0";rakuten_size="468x160";rakuten_target="_blank";rakuten_theme="gray";rakuten_border="off";rakuten_auto…

  • 【UnityC#】例外クラスを自作する

    C#には例外処理があらかじめ色々定義されています。なんとかExceptionとか、ほにゃららExceptionとか。 特定のシチュエーションでの例外を自分で定義したい!となった時のために例外クラスの自作について調べました。 以下のコードではボールオブジェクトの重力を切る処理をRigidBodyを参照して行います。RigidBodyの参照がされない主なパターンとして、 (1)用意したRigidbodyの参照がnull (2)そもそもRigidbodyがアタッチされていない があるので、その時に例外処理をします。 この2つのパターンを新たな例外としてクラスを作成します。 Ball.cs using…

  • 【Unity】画面を超高速で切り替えて二重スクロールを作る

    はじめに みなさんは、「地球解放軍ジアース」というゲームをご存知でしょうか? ゲームボーイの残像を利用して二重スクロールを作ったゲームとして有名です。 でも、あくまでゲームボーイの特性を利用したものなので、「地球解放軍ジアース」はスーパーゲームボーイ等でプレイすると画面がちらつきます。 では、「普通に画面を重ねる」ことなく二重スクロールを実現するには、人間の目に認識できないほど高速に画面切り替えすればいけるのではとかんがえました。 仮現運動 人間の目は、セルを並べて点滅させる時間を変えると、セルが動いているように見えたり見えなかったりします。 隣接したセルの点滅切り替えの早さが60ms程度でそ…

  • 【Unity】マテリアルの色をスクリプトから変更する

    ちょっとしたメモ CubeやSphereのマテリアルの色はスクリプトから変更できます。 Block.cs using UnityEngine; public class Block : MonoBehaviour { private Material material; private void Init () { material = GetComponent<Renderer>().material; } private void Awake () { Init(); } private void Start () { //どっちも同じ material.SetColor("_Color"…

  • 【UnityC#】Invokeを使い倒してみた

    UnityにInvokeというおもしろそうな関数がありました。 .netのControl.Invokeとは別物です。 Invokeとは 関数の実行タイミングを遅らせることができます。 Invoke(関数の名前,実行するタイミング); 実装してみた youtu.be世紀末にいそうな人が一定の間隔で地面から生えます。 HyahhaSpawner.cs using UnityEngine; public class HyahhaSpawner : MonoBehaviour { //===========================================================…

  • 【UnityTestRunner】テストケースをScriptableObjectで定義してみた

    前回 tofgame.hatenablog.com 今回やること テストケースをScriptableObjectで作ります。 まずScriptableObjectを作成します。 TestCase_Move.cs using UnityEngine; [CreateAssetMenu(menuName ="TestCase/Move")] public class TestCase_Move : ScriptableObject { public int size; public int[] x; public int[] y; } 数字を入れて・・・ テスト用のスクリプトを書きます・・・ As…

  • 【Unity】ScriptableObjectを使ってみた

    ScriptableObjectの作り方について備忘録。まずScriptableObjectを継承したクラスを作ります。 [CreateAssetMenu]を付与してエディタ上でScriptableObjectを作成できるようにします。 BallData.cs using UnityEngine; [CreateAssetMenu(menuName ="ScriptableObject/Ball")] public class BallData : ScriptableObject { public int speed; public int maxhp; public int power; …

  • 【C#】returnで条件分岐をきれいにしたい!

    はじめに コードを書いていると、どうしても条件が複雑になったりしますよね。 returnを利用してきれいにする流れを個人的にまとめてみました。 直したいコード private void Attack (int power) { if(waitTime == 0) { if(forwardEnemy) { forwardEnemy.GetComponent<EnemyStatus>().Damage(power); } } } 条件がネストしているので、条件から外れるときにリターンをするようにします。 private void Attack (int power) { if(!(waitTime…

  • 【Unity】テスト(Unity Test Runner)を使ってみる

    前回 tofgame.hatenablog.com今回は実際にどういう風に運用するのがいいのかを考えてみます。変数として以下のものを使います。 private Vector2Int pos = new Vector2Int(0,0); private float moveY = 1; private int fieldSize = 10; テストを行うために初期化処理を加えます。 [SetUp] public void SetupTest () { pos = new Vector2Int(0,0); } SetUpAttributeを付与するとテストが行われるごとに呼ばれます。 例1 グリッ…

  • 【Unity】テスト(Unity Test Runner)を試す

    使用したバージョン 2018.3.7f1 概要 Unityでテストコードを作ってみます docs.unity3d.com 手順 1 テストフォルダ、ファイルを作るこのとき、NUnit等を使用するためのアセンブリファイルが作成されます。2 テストスクリプトを作るデフォルトのスクリプトが作成されます。 スクリプトは先ほど作成したアセンブリファイルと同じ位置に作成してください。3 Test Runnerを開く4 「Run All」をクリックするチェックマークがつけば問題なく動いています。 デフォルトのテストスクリプト 作られるテストスクリプトの中身はこうなっています。 using System.Co…

  • 【UnityC#】コルーチン内で入力待ちする

    コルーチンの中で入力待ちをしたいと思ったので調べました。 (1)WaitUntil 条件が一致するときに待機を抜ける便利なやつです。 docs.unity3d.com 例えば、下記のように扱います。 IEnumerator WaitUntilTest () { yield return new WaitUntil(() => { return true; }); } スペースキー入力を待機するなら、 IEnumerator WaitInput () { yield return new WaitUntil(() => Input.GetKeyDown(KeyCode.Space)); } 引数…

arrow_drop_down

ブログリーダー」を活用して、トーフメモさんをフォローしませんか?

ハンドル名
トーフメモさん
ブログタイトル
トーフメモ
フォロー
トーフメモ

にほんブログ村 カテゴリー一覧

商用