投稿

8月, 2020の投稿を表示しています

丸いフチを描くシェーダー

イメージ
 UnityのUIで円形のイメージを取り扱うのは 意外と面倒な作業です。 ビットマップは拡大や縮小でサイズを変更すると どうしても画像がボケてしまいます。 その理由で、UIで使うビットマップイメージは できれば元本サイズで描画するようにしています。 特に、丸いフチの四角形はUIで良く使われる形なので 角の半径によって複数サイズのイメージを 用意しないといけないのが面倒くさいです。 サイズ関係なくキレイな円を描く方法はないのか? それで調べた結果、良いものを見つけました。 Unity-UI-Rounded-Corners イメージの角を丸く描画するシェーダー Github URL :  https://github.com/kirevdokimov/Unity-UI-Rounded-Corners シェーダーを使って半径を設定するとイメージの 角を丸く描きます。 特にuGUIと相性が良くて、既存Imageの機能と 競合しないのが素晴らしいです。 UnityEngine.UI.Buttonへ適用した姿 このシェーダーの面白い機能は、各角ごとに それぞれ半径を設定することです。 半円形のUI構成する時に助かります。 これで一つ悩みが解決されてスッキリしました。 素敵なシェーダーを作ってくれた製作者に感謝

ゲームデプロイの自動化

イメージ
こんにちは この前、ハバネロのゲームをデプロイする作業を 自動化するスクリプトを作成しましたので、 その内容をブログに記録しておきます。 ハバネロゲームの更新フロー ハバネロのゲームページはこういう構造になっています。 それで、ゲーム更新は下のプロセスを行います。 Unityビルドでゲームファイルを生成(js, html) ↓ ビルドしたファイルをS3にアップロード ↓ DBにStorage URLを更新 この中で、 UnityのWebGLビルドは結構時間がかかるので デプロイ作業だけで、かなり時間が取られました。 従って、ゲームのデプロイ作業の一連を順次で行う スクリプトを作りました。 Unityビルドでゲームファイルを生成 Unityはコマンドラインビルドをサポートしています。 コマンドラインビルドのため、下のような static Classを用意します。 public static class BuildScript {     // 実行する関数(staticで定義)     static void BuildWeb()     {         ...         string outputPath = Application.dataPath + "/../../" + "output";         BuildTarget buildTarget = BuildTarget.WebGL;         BuildOptions buildOptions = BuildOptions.None;         //ビルド実行         var result =

自分メモ:WebGLでは async / await 使用不可

イメージ
最近気付きましたが、UnityのWebGLでは async / await を使った非同期コードが動作しないです。 マニュアルにも明示されていました。 つまり、WebGLで非同期コードを書きたい場合は コルーチンを使えば良いです。

自分メモ:C#のラムダ式

基本形 (parameters) => { expressions; }; 例: delegate int MyFunc(float a); // float→int変換関数のラムダ式 MyFunc floatToInt = (float a) => { return (int)a; }; // 明示的タイプは省略可能 floatToInt = (a) => { return (int)a; }; // 引数が1個であれば括弧省略可能 floatToInt = a => { return (int)a; }; // 単文式の場合、中括弧も省略可能 (返還値がある場合 returnも省略) floatToInt = a => (int)a; 応用:getter, setter float a; public int A { get { return (int)a; } } // ラムダ式 public int A { get => (int)a; } // 更に省略可能 public int A => (int)a;