さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

【Unity】CameraのViewportRectのレイアウトが崩れないようにする

 Cameraのスクリーン上の描画範囲はViewportRectによって設定できる。が、そのままだと使いづらいので、補助のためのスクリプト

 具体的には画面アスペクト比が変化してもレイアウトが崩れないようにできる。(UIのCanvasScalerと同じような感覚で使える)

github.com

f:id:enuenupi:20200218092514p:plain

【Unity】自作パッケージのサンプル作成

 ようやく自作パッケージのサンプルコードに着手しはじめた。とりあえず分かりづらそうなところで、翻訳、ルビ表示、ファイル読み書き。

github.com

github.com

github.com

 サンプルコードはpackageManagerからインポートできる。

f:id:enuenupi:20200215213215p:plain

参考

https://forum.unity.com/threads/samples-in-packages-manual-setup.623080/

2020年のこと

去年振り返り

toriden.hatenablog.com

やること

MST

 去年に海外のSwitchで出せて一区切りついた……んだけど、実はまだやることが残ってたりする。というわけで今年はまずそれだ。そのうちなんか出せると思います。

次作品

 なんやかんやで伸び伸びになってますね! この時点で難産なんですが。がんばる。

 出すとすればまずはSteamアーリーアクセスになると思います。そこでバグ対応しつつ翻訳対応して正式リリースの流れかなあ。

 (それはそれとしてさっさとストアページは作ろう つくりたい)

裏方

 去年はあんまりなんもできてないなーみたいな感じなんですが、見えないところでちょこちょこ動いてたりします。

 開発に全速を出すのも一つのやり方だとは思うんですが、そうではなくもうちょい防御的に、見えてる爆弾を片づけたり。とにかく即死しないように布石を置いてみたりだ。

 というわけで去年に仕込んでおいたものを今年は回収していこう。まあ見えないんですが。

イベント

 コミケとかのイベントで何をやるか?というのは、すっかりWebが主戦場になった当サークルではずっと課題なんですが、冬コミでMSTの小説本を書いてみて、こういうのでもいいかなあ。とか思ってみたり。

 リリース済み作品関連で何か出す感じ。アクスタとか……アクスタとか

GitHub

 去年の後半ぐらいからなんですが、UnityPackageという形でリポジトリをちょいちょい公開しています。まあ基本的に自分用なんですけど(複数プロジェクトでモジュール共有しようとするとこうなる)、コード公開は良い文化なので今年もやっていく。

 欲を言えば他の開発者の役に立てれば良いんですが、ドキュメントなりサンプルなりを用意せえという話なのでメンドクササが倍増し、まあでも今年は欲をかいてその辺を目標にやっていきましょう。

【Unity】音まわりパッケージ

ナニコレ

 そろそろ音まわりの処理が共通化できそうだなーということでやってみる。

 とはいえ音に関してはこだわったことをしたことがないので、機能は必要最低限という感じ。FPSなんか作るともう少し演出的にやるべきことができるんだろうけど…。

リポジトリ

github.com

機能

  • BGMのフェードアウトつき遷移
  • BGMアセットの読み込み先切り替え(アセットバンドル or 内部アセット)
    • ただし、アセットバンドル版だと起動時に全部読み込んでメモリに乗せるというゴリ押しの実装になっている。
      • というのもロード処理に関してはハードの影響をモロに受けるので、ベストプラクティスな書き方がないように見える。なのでとりあえずはロード時間が問題にならない方式を用意しておいた。
      • ロード処理はある程度アプリ側で書けるようにしてある。IMusicStoreを実装すればいい。
  • 効果音同時再生の抑制
    • 同じ音が大量に同じフレームに鳴って潰れる、みたいなのを回避する。
  • ちょっとした工夫として、使い終わった音声ファイルは(設定されていれば)AudioClip.UnloadAudioDataを呼んで使用メモリを減らすようにしている。

TODO

 これまで作ったパッケージの機能を網羅するサンプルプロジェクトがあればいいかなあ。

コミケ97のこと・直前版

f:id:enuenupi:20191229165650p:plain

サークルスペース

 火南モ06b オートリ電子

頒布物

  • MagicScrollTactics小説本。4Pの折本です。新刊。無料。
  • 次回作紹介折本。デジゲー博で頒布したやつです。無料
  • Steamカード

 というギリギリな感じですがなんとか新刊があります。

コミケ97のこと

サークル参加です。

場所

 火南モ06b オートリ電子

カット

f:id:enuenupi:20191225221751p:plain

頒布物

  • デジゲー博で頒布した折本(無料)。次回作について書かれてたりするやつです。
  • あともうひとつぐらい新規で出したいんですがまだ準備中。めどが立ったら書きます。

【Unity】Googleスプレッドシートの値を取得する・2

やること

 非公開設定のスプレッドシートからセルの内容を読み込む

 環境:Unity2019.2.17、UniTask、Utf8Json

参考:前の記事

toriden.hatenablog.com

手順

1. クライアントID、クライアントシークレット発行

 GoogleCloudPlatformでクライアントIDとクライアントシークレットを作る

2.コード

    async void Start()
    {
        // リフレッシュトークンがない場合は認証してリフレッシュトークンを取得し、保存しておく
        var client = "クライアントId";
        var secret = "クライアントシークレット";
        var scope = "https://www.googleapis.com/auth/spreadsheets.readonly";
        var refreshToken = await GoogleApi.RequestRefreshToken(scope, client, secret);

        // リフレッシュトークンからアクセストークンを取得
        var accessToken = await GoogleApi.RequestAccessToken(refreshToken.refresh_token, client, secret);

        // スプレッドシート取得
        var sheetId = "シートId";
        var sheet = await GoogleApis.SpreadSheet.LoadByAccessTokenAsync(accessToken.access_token, sheetId, "シート1");
        Debug.Log(sheet.JsonString);
    }

 リフレッシュトークンを保存する際には暗号化をかけておきましょう。

 Windows環境のみ対応。スマホアプリの場合、認証処理はリダイレクト処理をURIスキーマ経由にすることでうまくいく(はず)。Macは知らない

ひっかかりどころ

 認証時に警告が出たりします。

www.eripyon.com

リポジトリ

github.com

参考

github.com