Debug.LogFormat

Debug出力する際に、定例分の中に変数を埋め込むString.formatは便利なのですが、Debug.Logと組み合わせると、コードが長くなってしまいますが、直接、フォーマットできる方法があります。

Debug.LogFormatを使うと、整形フォーマットを指定できます。

string foo = "abc";
Debug.LogFormat("foo: {0}", foo); // foo: abc

引数の指定の仕方は、String.formatと同じ。

C#で2次元配列

C#で2次元配列を宣言、初期化する

int[,] twoDim = new int[8,16];

要素8個の中に、要素16個を持つ2次元配列をつくる。

2次元配列のアクセス

int[2,4] = 128;

VS Codeのタイトルバーをカッコよくする

VS(Visual Studio) Codeの1.25からタイトルバーの表示内容とスタイルを変更できるようになった。

設定ファイルに、

"window.titleBarStyle": "custom"

と記述すると、タイトルバーがこんな感じになる。

ちょっとだけ、シュッとなる。

なお、このオプションは、Windows/Linuxだけ有効。もとから、Macはシュッとなっていた。

DoTweenでオーディオのフェード

DoTweenでオーディオのフェードイン/アウトを簡単に実装

ライブラリのインポート

冒頭で、

using DG.Tweening;

フェードをしたいところで

ボリューム0まで、1秒でフェードアウトする場合

AudioSource audioSource = this.gameObject.GetComponent<AudioSource>();
float vol = 0.0f;
float duration = 1.0f;
audioSource.DOFade( vol, duration );

AudioSourceコンポーネントを持ったGameObjectなどに、このコードを記述したスクリプトを張りつける。

特定のファイルだけを前のコミットに戻す

特定のファイルだけを元に戻す方法

戻したいコミットのハッシュを調べる

$ git log

どのファイルが更新されたかは、

$ git log --stat

で確認することができる。

元に戻す

$ git checkout <hash> <filepath>

<hash>に元に戻したいコミットのハッシュを指定。

macOSをHigh SierraにしたらAssetsが空になる件

UnityのVersion 5.6.1 f1で発生するのだが、macOSをHigh Sierraにすると、Assetsの中身が空になってしまう症状がある。

原因は、High Sierraで採用されているファイルシステムAPFSにUnityの古いバージョンが対応していないのが原因。プロジェクトフォルダを、これまでのAFPSの外付けHDDにコピーして読み込めば、
開くことが可能。一安心。
ちなみに、このバグのパッチが当たったバージョンもリリースされている。

詳しくは、こちらを。
https://helpdesk.unity3d.co.jp/hc/ja/articles/115012768187-macOS-10-13-High-Sierra-%E3%81%AB%E3%81%A6-Project%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E5%86%85%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E8%A6%8B%E3%81%88%E3%81%AA%E3%81%84-%E3%81%82%E3%82%8B%E3%81%84%E3%81%AFMonoDevelop%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84

WindowsキーとAltキーを入れ替える方法

WindowsでWindowsキーとAltキーを入れ替える方法。US配列キーボードで、左右のWindowsキーでMac風に「かな」切替をするときに、Macと同じ配列になって便利。

フリーソフトの“ChangeKey”で常駐ソフト無しで、レジストリを修正する形で実現できる。

左クリックなのか、右クリックなのかを判別する方法

イベントデータからボタンの種別を取得できる

例えば、

public void OnPointerClick(PointerEventData pointerEventData)
{
    switch(pointerEventData.pointerId)
    {
        case -1:
            Debug.Log("Left Click");
            break;
        case -2:
            Debug.Log("Right Click");
            break;
        case -3:
            Debug.Log("Middle Click");
            break;
    }
}

https://docs.unity3d.com/ja/current/ScriptReference/EventSystems.PointerEventData.html

TDでオペレータを動的に複製する方法

他言語だと、クラスをfor文などでインスタンス生成するような複製の方法。例えば、JSだと。

class Foo()
{
  console.log("Hello, world!");
}

var i;
var list = [];
for( i=0; i<5; i++ )
{
   var f = new Foo();
   list.push(f);
}

みたいな処理。

多くの場合は、処理をまとめたBase COMPを動的に複製して、表示する場合などと思われる。その場合は、Replicator COMPを使う。

元となるBase COMPを作る

OOPで言うクラスファイルとなるBase COMPを作る。

オペレータの名前は、”masterItem0″とする。masterItem0の中は、次のようになっている。

In CHOPに入ってきた値をMath CHOPで2を掛けて、Out CHOPで出力しているネットワーク。In CHOPへの値は、constant1から入力されている。

Replicator COMPで複製する

次に、クラスからインスタンスを生成する様に、Base COMPを複製するには、Replicator COMPを使う。

ここでは、replicator1というCOMPを作り、プロパティは、次のように設定する。

Replication Method: By Number 複製する数を数値で指定
Number of Replication 5 複製する数
Master Operation masterItem0 元になるOperation。この項目に、ドラッグすると指定できる。

こうすることによって、”masterItem0″が5個分、複製される。

サンプルtoe
https://github.com/arkwknsk/touchdesigner/blob/master/tips/object/object.toe