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

UIのPrefabを追加するときのWarning

Prefab化したUIパーツをCanvasに、スクリプトでアタッチしようとしたらWarningが出た。

Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.
UnityEngine.Transform:set_parent(Transform)

GameObject o = Instantiate( Foo );
o.transform.parent = this.transform;

こういう様に親GameObjectを指定するのは良くはなく、以下が正しい。

GameObject o = Instantiate( Foo );
o.transform.SetParent(this.transform);

Via! http://haraken.hatenablog.com/entry/2016/11/11/RectTransform%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%A8%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E8%A9%B1