chevron_left

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

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

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

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

2019/04/27

arrow_drop_down
  • 【CUBASE】楽譜の音部記号や調号を変更する

    楽譜作成時に結構調べたので備忘録として残します。Windowsでの編集なのでMacだと少し違うかもしれません。 また、Cubase AI 9.5での編集になります。楽譜はデフォルトでト音記号、Cスケールに設定されているので、「ヘ音記号など別の音部記号に変更したりするとき」「楽譜に調号を付けたいとき」どこを触れればいいのかを説明します! スコアエディタを開く スコアエディタを開き何かしら打ち込みます。 譜表の設定を開く スコアエディタをアクティブにした状態(白枠が付きます)で画面上部の「MIDI/スコア/譜表の設定」を開きます。 すると、このような画面が開きます。ここで音部記号や調号の編集ができ…

  • ボタンとシーン遷移の実装【Processing】

    ボタンを押して別シーンに遷移する処理を作ります! 実装の流れ ボタンを作る マウスがボタンに重なると色が変わり、またクリック後に別シーンにうつるようなものを作ります。 シーンを作り、ボタンを押すと別シーンにうつるようにする シーン用に変数を用意してシーン用変数が特定の値の時に特定のシーンの処理を実行する、という感じです。 これはswitch文などを使うとわりと簡単に実装できます。 ボタンに用意した関数を使ってシーンを切り替えます。 ボタンを作る class Button { float x, y; float sizeX, sizeY; int state; color baseCol; fl…

  • Processingでモーショングラフィックスを作るまで その3

    3回目です!前回の記事はこちら tofgame.hatenablog.com 今回作るもののイメージ (1)文字が回転しながら中心に寄る (2)全部の文字が中心に寄ったら文字が消える (3)文字が消えた部分から丸が広がり文字が現れる 文字が回転しながら中心に寄る 文字用クラス「RotateText」を作成します。 中心点を基準に三角関数で位置を決めるイメージです。 半径と角度を変数定義しておき、それを変更することで回転、中心に寄るといった動作を実装します。 全部の文字が中心に寄ったら文字が消える 半径が0になったタイミングでArrayListのRemoveを使って消します。 文字が消えた部分か…

  • 映像作品でよく見るうごめくテキストを作る【Processing】

    テキストがピントを合わせながら動いてる感じの表現を作りました。 できたもの ソースコード ポイント filter関数を使って、ブラーを画面にかけます! filter関数の引数として0~6をループする変数を使うことでくっきり⇔ぼやけの流れを作ります。 使いどころ 街の中に出現させたりします。 使った素材 ymnk-design.comrakuten_design="slide";rakuten_affiliateId="185a3da0.516b4bcf.185a3da1.562c24b0";rakuten_items="ctsmatch";rakuten_genreId="0";rakuten…

  • マウスが重なっているUIを取得する【Unity】

    やること EventSystemを参照してマウスが指示している位置に重なっているUIオブジェクトを取得します! 取得するオブジェクトは、EventSystemのInspecterの下部にあるWindowのpointerEnterでも確認できます。 手順 まずUnityEngine.EventSystemsをusingします。 using UnityEngine.EventSystems; EventSystemを参照します。(アタッチするなりスクリプトで参照するなり) private EventSystem eventSystem; eventSystem=FindObjectOfType<E…

  • Image(Canvas)の座標変更でハマった話【Unity】

    小一時間悩んだのでメモとして残します。 やりたいこと スクリプトからCanvas下に作ったImageの座標を任意の位置に変更する。 失敗例 以下のパターンだとずれました。 transform.position= new Vector2((100,100); transform.localPosition= new Vector2((100,100); GetComponent<RectTransform>().position= new Vector2((100,100); GetComponent<RectTransform>().localPosition= new Vector2((10…

  • UnityでYoutubeの動画を再生する

    はじめに 注意点 動作環境 制作フロー VideoLibraryをUnityに組み込む VideoLibraryを使って動画データの取得 各種パッケージ 動画情報取得からの動画取得 動画の再生 動画データの後始末 ゲームオブジェクトの設定 実行すると 終わりに はじめに Youtube、言わずと知れた動画サイトで、あらゆる動画コンテンツがあります。そして、UnityでYoutubeの動画を再生できれば、自分で色々な機能を追加できると思われます。データとして取れれば、Unity内で編集してMAD動画をつくれたり、ゲーム内で使えたり、バーチャル空間で再生なんかもできます!夢がひろがりますね!もちろ…

  • アセットインポートを自分で呼び出す【Unity】

    起こった問題 Unity実行中に、System.IO.Fileクラスで作成したファイル、フォルダや、その他方法で作成したデータをAssetフォルダ上に置いて使用するとします。ですが、Unityエディタ上ではすぐ認識されず、Unity側の認識を待たなければResources.Loadなどではロードできない状況になります。ProjectViewで確認してもわかりますが、実行中にファイルをAssetフォルダに含めても、更新がかかるまで少し待つことになります。 解決策 AssetDatabase.Refresh()を使用します! docs.unity3d.comなお、AssetDatabase.Ref…

  • Processingで簡単な爆発エフェクトをつくる

    爆発は正義なのでProcessingで爆発エフェクトを作りました! イメージ 爆発の破片をrect関数を使って表現します 爆発時にフラッシュを炊いて迫力を付けます circle関数で衝撃波も書きます 音も出します 制作フロー 爆発の破片クラスExRectクラスを作成する。 位置、速度、大きさ、回転速度を定義していじれるようにします。 爆発クラスExplosionを作成する。 この中で爆発の破片を生成して、さらに衝撃波とフラッシュ部分も書きます。 時間用の変数を定義して、衝撃波の大きさとフラッシュの間隔に使用します。 爆発をクリックした場所に出す 実際にインスタンス生成します。 Minimライブ…

  • GOTO文は使いよう【UnityC#】

    そもそもGOTO文とは ラベルを記述した場所に処理を飛ばすことができる記法です。 例 private IEnumerator Start () { A: Debug.Log("ループするよ"); yield return new WaitForEndOfFrame(); goto A; } 上みたいなのだとwhile(true)と同じような動作をします。 これだとどこに飛ぶかがわかりにくい・・・ きれいに記述されたコードが光属性なら、GOTO文をたくさん使ったコードは闇属性だと思います(?)。 なんとなく嫌なイメージが先行しているGOTO文ですが、GOTO文について僕は何もしらなかったので、詳…

  • Processingでモーショングラフィックスを作るまで その2

    モーショングラフィックスっぽい表現を作っていきます! 2回目です。 前回 tofgame.hatenablog.com 今回つくったもの クリックした位置にそれっぽい図形が出現して消えるモーショングラフィックス ソースコード 課題点 扱う図形が増えるごとにパラメータが多くなるので、そこをうまくまとめる仕組みを考える必要があります。 よく使いそうな表現をクラス可して、どのタイミングでどの動作を行うかといった制御周りとの区別を明確にするような設計を作るとよさそうです。 次回はそのあたりを意識して作ります。 次回 早くて明日上げます!rakuten_design="slide";rakuten_af…

  • Processingでモーショングラフィックスを作るまで その1

    モーショングラフィックスとは 図形やテキストやイラストなどに音や動きを加えたものです。 カッコイイものはネットにいっぱい転がっているので、Google先生かYahoo先生に聞いてみてください。 やること Processingはグラフィック表現がしやすい言語です。 関数一つで簡単に四角や丸などを書くことができます。 しかも、Javaベースでオブジェクト指向プログラミングもできる・・・ つまり モーショングラフィックスが作りやすい!気がする! なので モーショングラフィックスでよく用いられているような表現を一つづつ分解していってProcessingで作っていきます! 今回やること 四角が移動してき…

  • Processingで波を書く方法

    波のような滑らかな動きを使うと一気にリッチな表現ができるようになります。 作り方 「Vertex」という、点を打つ関数を使います! sin()を使って点を打てば、波のようになります。 ポイント beginShape(); vertex(-100, height/2); for (int i=0; i<width*resolution; i++) { vertex(i/resolution, sin(i/interval+x)*_height+height/2); } vertex(width+100,height/2); vertex(width+100, height); vertex(-1…

  • SourceTreeにGithubアカウントを追加する

    個人的に忘れそうだったので備忘録として残します。 環境 【OS】Windows10 【SourceTree】3.1.2.3027 SourceTreeにアカウントを追加する ツール -> オプション でオプションを開き、認証タブをクリックすると以下のような表示になります。 「追加」をクリックすると「ホスティングアカウントを設定」と出ます。 ホスティングサービスの部分をGithubに変更。 ここで「OAuthトークンを再読み込み」をクリック(ここが一番重要) そうするとブラウザが立ち上がり認証画面に飛ぶので、認証。 これでGithubアカウントが追加されます。 rakuten_design="s…

  • エディタ拡張で偽ブラクラを作る【Unity】

    無限にウィンドウが開いたり、ホラー画像がでかでかと出たり、明らかにいたずらで作ったwebページ。 うっかりリンクを踏んだら最後。 このwebページをブラクラ(ブラウザクラッシャー)といい、1990年代から、2000年代あたりに多くありました。(今もどこかにあるはず) つくるもの ウィンドウが消すほど増えるような仕組みをUnityのエディタ拡張で再現してみたいと思います! ブラクラとして有名な「You are an idiot!」みたいなものを作ります。 本当に無限にウィンドウが作成されるとUnityクラッシャーになる大変なので、何回か増えたら消せるように制限をかけます。 制作フロー (1)Ed…

  • 【古代の】Fortran導入してみた【プログラミング言語】

    Fortran、使ったことないな なんとなく気になって導入してみました! どうやら1950年代後半からあったプログラミング言語らしいです。 今回はFortran2008で書きます。 環境を整える 現在使っているPCがWindows10なので、Macでは事情が違うかもしれません。 Cygwinをインストールしました。 CygwinでFortranのコンパイラもインストールできます。 以下のページを参考にしました。 www2.kuma.u-tokai.ac.jp いつもの(Hello,world!) コードを書きます(拡張子は.f08) tst.f08 program tst print *,'H…

  • 【Unity】エディタ拡張で音楽をながす方法

    EditorWindowを作成してその中で音を出したい! コンポーネントを作るんじゃなく、直接呼び出したい! 調べました! AudioUtility 既につよいスクリプトを作っている人がいたので、これを利用して実装します。 このAudioUtility内のメソッドを使ってAulidclipを呼び出します。 https://forum.unity.com/threads/reflected-audioutil-class-for-making-audio-based-editor-extensions.308133/このAudioUtilityの中でも、PlayClipというメソッドをピックアッ…

  • 3秒でわかる「リフレクション」【UnityC#】

    リフレクションとは メタデータを使ってクラスやメソッドの情報にアクセスすることです!メタデータは、クラス名やメソッド名、変数などの、プログラムデータに関する情報のことです。リフレクションを使うことで、メタデータの取得はもちろん、メタデータからクラスや関数を呼び出すこともできます。アセンブリからデータを呼び出すこともできます!すごい!リフレクションプローブ(Reflection Prove)とは無関係です。今回は、他クラスのメタデータの取得とメソッドの呼び出しを試してみます。 メタデータを見てみる まずはメタデータを取得する対象のクラスを定義します。 public class TestClass…

  • 3秒でわかる「フラグメントシェーダー」【Unity】

    フラグメントシェーダーとは 画面に投影される予定のピクセルの色データを加工するシェーダーです! 頂点シェーダーで加工したデータが別の工程を経た後、画面に投影される分のピクセルデータに変換されます。 そのピクセルデータを受け取り、再計算することでいろんな見えかたに変化させることができます。 前回(頂点シェーダー) tofgame.hatenablog.com 前回と同じコードを使います。 シェーダーのコード Shader "Unlit/NewUnlitShader"{ Properties{ _MainTex("Texture", 2D) = "white" {} } SubShader{ Ta…

  • 3秒でわかる「テイラー展開」

    テイラー展開とは テイラーの定理から導かれる近似式展開です! 難しい式を一次式、二次式などのシンプルな形に近似できます。 式 付近で近似するとして、 をテイラー展開 まずはテイラー展開で一致しそうな式から見てみます。 x=0でテイラー展開します。 式が一致しました!x=3でテイラー展開してみます。 これも一致します! をテイラー展開 まずはx=0で1次近似します。 とだとあまりにも違うので、次はx=0で2次近似をします。 なので、1次近似と同じ値になりました。次は3次近似をします。 少し近づきました! 計算していくとわかりますが、下記の式のようになります。 マクローリン展開 付近でテイラー展開…

  • 3秒でわかる「積率(モーメント)」【確率統計学】

    積率とは 確率分布の特徴を調べるために扱う値です! 標本と確率の積、つまり期待値を扱って定義されます。 詳しく 上の式を「xの原点周りのk次の積率」と呼びます。また、 上の式を「xの期待値周りのk次の積率」と呼びます。積率を使うことで期待値、分散、歪度、尖度を表現できます。 期待値 分散 歪度 尖度 参考にしました data-science.gr.jp 関連記事 tofgame.hatenablog.com tofgame.hatenablog.com tofgame.hatenablog.com tofgame.hatenablog.comrakuten_design="slide";rak…

  • 3秒でわかる「尖度(せんど)」【統計学】

    尖度とは 確率分布のとがり具合です! 正規分布と比べて中心部分にデータが偏っているか、広く分散しているかで値が変わります。 尖度>0 正規分布よりとがっているときに正の値になります。 尖度 正規分布より滑らかなときに負の値になります。 式 を確率変数、を期待値、を標準偏差として、 ここで、rakuten_design="slide";rakuten_affiliateId="185a3da0.516b4bcf.185a3da1.562c24b0";rakuten_items="ctsmatch";rakuten_genreId="0";rakuten_size="468x160";rakute…

  • 3秒でわかる!「歪度(わいど)」【統計学】

    歪度とは データの対称具合です! 歪度が0に近いほどデータの確率分布は正規分布のようなきれいな分布(対称的)になります。 歪度0 歪度>0 歪度 式 を期待値、を標準偏差として、 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="…

  • 3秒でわかる!「頂点シェーダー」【Unity】

    頂点シェーダーについて

  • 3秒でわかる!「分散」

    分散とは データのちらばり具合です! 分散という言葉からもなんとなくそんな感じがしますね! 詳しく 分散を、確率変数を、期待値をとして、 (確率変数と期待値の二乗誤差の期待値)また、分散の平方根は標準偏差といいます。 身長の分散 A~Dさんがいるとします。Aさん(140cm)Bさん(163cm)Cさん(185cm)Dさん(155cm)この4人の身長の分散を計算しましょう。 (1) 4人の身長の平均() (2) (1)の二乗() (3) 4人の身長の二乗の平均() よって分散は、 です!では、4人とも同じ身長だったらどうなるでしょうか? 全員140cmだとして、 (1) 4人の身長の平均() (…

  • 【統計学】3秒でわかる中央値

    中央値とは 集まりのちょうど真ん中のことです! 詳しく 確率をとして、 を満たすを中央値と言います。集まりを小さい順に並べて、小さい順(大きい順)に集まりの数の半分まで数え上げると、中央値がわかります。 集まりの数が偶数の時は集まりの数の半分が二つあるので、その二つの平均が中央値です。また、確率変数をx、確率関数をf(x)として、 を最小にするも中央値になります。 年収の中央値 年収は何億何十億と、ものすごい稼いでいる人もいます。 なので、平均値(期待値)にすると、「あれ?平均でみんなこんなに稼いでいるのか・・・」となります。 中央値は「集まりのちょうど真ん中」をみるので、集まりで一番稼いでい…

  • 【Unity】3秒でわかるカスタムコルーチン

    カスタムコルーチンとは 自分で実装するコルーチンです! 作り方 分指定で待ってくれるコルーチンを作ります。 (1)クラスを定義 public class WaitForMinutes{ } (2)CustomYieldInstructionを継承 using UnityEngine; public class WaitForMinutes : CustomYieldInstruction { } (3)keepWaitingをオーバーライド 抽象メソッドを実装しよう。 public class WaitForMinutes : CustomYieldInstruction { public o…

  • 【Unity】シーンファイルの正体

    Unityを使っているとき、ほぼ確実に使う「シーンファイル」。 拡張子は.unityで、シーンを保存すると作成されます。けどこれ何を保存してるんだろう・・・ シーンの情報が入っているんだろうけど・・・ ・・・気になったので調べました! 今回使用したUnityのバージョンはUnity2018 3.7f1です。 シーンファイルの形式 「YAML」という名前のHTMLやXMLと似たようなマークアップ言語らしいです。 SampleScene.unityはこんなかんじ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 OcclusionCulli…

  • 【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)); } 引数…

  • 【Processing】 ボールが跳ね返って波みたいに消えるプログラム

    おもいつきプログラミング Processingはいいぞ BallAndWave.pde ArrayList<Ball> ball=new ArrayList<Ball>(); ArrayList<Effect> effect=new ArrayList<Effect>(); void setup() { size(1300, 1300); colorMode(HSB, 360, 100, 100, 100); textAlign(CENTER, CENTER); rectMode(CENTER); for (int i=0; i<50; i++) { ball.add(new Ball(bal…

  • 【Unity】データセーブロードをするためにJsonUtilityを使ってみた

    Unityでのセーブロードの話 今まではcsvファイルにデータを読み書きしていました。 でもcsvだとなんか重い・・・? というわけで、Jsonファイルに読み書きをしようと思い試してみました。 DataManager.cs using System.Collections.Generic; using UnityEngine; using System.IO; public class DataManager : SingletonMonoBehaviour<DataManager> { //===================================================…

  • HTN(階層型タスクネットワーク)についてメモ

    ちょっと勉強の一環でHTN(階層型タスクネットワーク)なるものを知ったのでメモ。 HTN(階層型タスクネットワーク)とは Hierarchical Task Networkの略で、名前の通り階層型にタスクを分割しネットワークを構築したもの。 問題を細かく分解して、手順にすると解決しやすい!っていう発想です。多分・・・? HTNを構成しているもの HTNは「Task」で構築されています。 「Task」には「Compound Task」と「PrimitiveTask」の2種類があります。 Primitive Task 「Primitive Task」は単一のタスクのことで、「Operator」、「…

  • 【Unity】【Android】「アプリはインストールされていません。」で苦戦した話

    UnityでAndroid向けにビルドしたら・・・ keystoreファイルを作成しビルド、作成したapkファイルを自分のandroid端末にインストールしたところ、 「アプリはインストールされていません。」 と表示されアプリのインストールに失敗しました。 解決策 僕の場合は 「Play ストア」アプリの「Play プロテクト」の「端末をスキャンしてセキュリティ上の脅威を確認」を一時的に解除することで問題なくインストールできるようになりました。 詳しいことはわかりませんが、このプロテクトがapkファイルのインストールを妨げていたようです。 また、これはkeystoreファイルを設定せずにビルド…

arrow_drop_down

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

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

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

商用