memomem

備忘録・メモ置き場

UnityからGoogle YoutubeAPI をつかって動画アップロード

このページが前準備でわかりやすかった。

client_secrets.json の準備

dev.classmethod.jp

Unityでは下記ページを参考にNuGetでパッケージをインストール
VisualStudioでNuGetを行う。

を使用

Pakagesの中の /lib/net45 をUnityのAssetsへコピーした。

github.com

developers.google.com 上記だと新しいAPIでは動かなかった。

github.com こちらのサンプルをUnity用に変更して使用した。

サンプルを実行するとブラウザが起動してAuthenticationの確認を求められる。

アップロード後の動画が「非公開(ロック済み)」になってしまう。

アプリは動作しファイルはアップロードさせるが、動画が「非公開(ロック済み」となってしまう。YoutubeのUIからの変更もできない。

申請を行えば良さそうではあるが。。

pcmatsumoto.wp.xdomain.jp

support.google.com

その他参考

qiita.com

stackoverflow.com

AvProをTimelineで使う

www.renderheads.com

とはいえ、あまり設定できる項目は少ないし、Editor上でリアルタイムにプレビューされるわけでもないので使い勝手は微妙か。。

Unity シーン間のデータ受け渡し

qiita.com

上記記事からの引用

[CreateAssetMenu(fileName = "ScoreScriptableObject", menuName = "ScoreScriptableObject", order = 0)]
public class ScoreScriptableObject : UnityEngine.ScriptableObject, ISerializationCallbackReceiver
{
    [SerializeField] private int initScore = default;
    [NonSerialized] public int Score;

    public void OnAfterDeserialize()
    {
        // Editor上では再生中に変更したScriptableObject内の値が実行終了時に消えない。
        // そのため、初期値と実行時に使う変数は分けておき、初期化する必要がある。
        Score = initScore;
    }

    public void OnBeforeSerialize() { /* do nothing */ }
}

// "GameScene"側
public class ScoreChanger
{
    [SerializeField] private ScoreScriptableObject scoreScriptableObject = default;

    public void ScorePlusOne()
    {
        scoreScriptableObject.Score++;
    }
}

// "ResultScene"側
public class ScoreGetter
{
    [SerializeField] private ScoreScriptableObject scoreScriptableObject = default;

    public void GetScore()
    {       
        return scoreScriptableObject.Score;
    }
}

//スコアを保持するScriptableObjectを一つつくり、それをシーン内のコンポーネントにインスペクターから設定しています。