トーフメモ

主にゲーム制作

2019-04-01から1ヶ月間の記事一覧

C#からPythonを実行する方法【Unity】

UnityとPythonをつなげてやりたいことがあります。 Pythonで機械学習して、Unityで作ったゲームの中で使う、そんな感じのことがしたいのです。 なのでまずはPythonをどうやって実行するか、というところが課題でした。 調べてみると案外あっさり見つかったの…

3秒でわかる「期待値」【確率統計学】

期待値とは 「起こることの数値」×「起こる確率」の合計です! 確率分布の真ん中がわかります。(外れ値がある場合感覚的に変な数値になる) 式 を確率変数、を確率関数、期待値を]とする。 期待値はのによる重み付き平均として定義する。 (1)確率変数が離散値…

3秒でわかる!「デリゲート」【UnityC#】

デリゲートとは メソッドへの参照 です! クラスみたいに参照して使えます。 書き方 自分でデリゲートを定義するやり方と、.NET Frameworkクラスライブラリに定義されてるAction、Funcを使うやりかたがあります。 自分で定義 delegateという修飾子を使うこと…

確率質量関数、確率密度関数の違い【確率統計学】

二つとも、確率を表す関数です。 この二つの違いは、確率変数(確率が与えられている変数)が離散的か、連続的かにあります。 確率質量関数 集合が数え上げられるものでできてているとき、加算集合といいます。 この加算集合の中の値をとる確率変数を離散的な…

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

エディタ上で動くゲームをつくりました。かんたんなシューティングです。 ゲーム制作に疲れたときに遊べるのでおすすめです(?) youtu.be 制作のポイント Event.current OnGUIがどのイベントで呼ばれているか取得できる&キー入力などを検知できる EditorGUI.D…

【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()の仕組み」が大きくかかわっていそうです。 …

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

少し苦労したのでメモ書き。 GUILayout.Spaceを使って位置を中心にずらします。 さらにGUIStyleを設定してalignmentを中心にずらします。 void OnGUI(){ GUILayout.Space(position.size.y / 2); GUIStyle myStyle = new GUIStyle(); myStyle.alignment = Tex…

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

HierarcyビューやInspectorビューなどのことを、EditorWindowと言います。 EditorWindowは自分で作ることができ、その中にいろんな機能を作ることができます。 つくりかた EditorWIndowクラスを継承したクラスを作成します。 EditorWIndowクラスを使うために…

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

または、を考えたいとき、 ラグランジュ乗数を導入して、ラグランジュ関数 を定義する。(1)または、(2)が成立するが存在するとき、 が成立する。 rakuten_design="slide";rakuten_affiliateId="185a3da0.516b4bcf.185a3da1.562c24b0";rakuten_items="ctsmatc…

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

C#には例外処理があらかじめ色々定義されています。なんとかExceptionとか、ほにゃららExceptionとか。 特定のシチュエーションでの例外を自分で定義したい!となった時のために例外クラスの自作について調べました。 以下のコードではボールオブジェクトの…

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

はじめに みなさんは、「地球解放軍ジアース」というゲームをご存知でしょうか? ゲームボーイの残像を利用して二重スクロールを作ったゲームとして有名です。 でも、あくまでゲームボーイの特性を利用したものなので、「地球解放軍ジアース」はスーパーゲー…

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

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

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

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

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

前回 tofgame.hatenablog.com 今回やること テストケースをScriptableObjectで作ります。 まずScriptableObjectを作成します。 TestCase_Move.cs using UnityEngine; [CreateAssetMenu(menuName ="TestCase/Move")] public class TestCase_Move : Scriptable…

【Unity】ScriptableObjectを使ってみた

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

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

はじめに コードを書いていると、どうしても条件が複雑になったりしますよね。 returnを利用してきれいにする流れを個人的にまとめてみました。 直したいコード private void Attack (int power) { if(waitTime == 0) { if(forwardEnemy) { forwardEnemy.Get…

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

前回 tofgame.hatenablog.com今回は実際にどういう風に運用するのがいいのかを考えてみます。変数として以下のものを使います。 private Vector2Int pos = new Vector2Int(0,0); private float moveY = 1; private int fieldSize = 10; テストを行うために初…

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

使用したバージョン 2018.3.7f1 概要 Unityでテストコードを作ってみます docs.unity3d.com 手順 1 テストフォルダ、ファイルを作るこのとき、NUnit等を使用するためのアセンブリファイルが作成されます。2 テストスクリプトを作るデフォルトのスクリプトが…

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

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