タグ: Unity

  • Unity UIをカスタマイズ Shapes2D

    Unity UIをカスタマイズ Shapes2D

    Unity UI 作るのめんどくさい問題。

    Web や モバイルAppの場合はMUIなどのUIライブラリを使えます。
    Unity で簡単で無料で使えるライブラリはないかと探していました。

    今回は使っていていい感じな Shapes 2D の使い方のメモです。

    ↓ Shapes 2D のアセットストアのリンク
    https://discussions.unity.com/t/free-shapes2d-procedural-2d-shapes-for-sprites-and-ui/627914

    手順

    Shapes 2Dの公式ドキュメントはこちらから確認できます。

    https://sub-c.org/Shapes2D/documentation

    標準のボタン

    まず最初の状態です。

    Shapes2D

    Body と書いてあるボタンをカスタマイズしていこうと思います。
    (それ以外のボタンは既にShapes 2D を適応しています)

    Shapes 2D Component の追加

    Asset Store からダウンロードしてインポートします。

    次にスタイルをつけたいオブジェクト(ボタン)をヒエラルキーから選択します。
    続いて、インスペクターパネルから[Add Component]ボタンをクリックして[Shapes 2D]を選択します。

    ヒエラルキーから選択
    スタイルを効かせたいものをヒエラルキーから選択
    Add Component からShapeを選択
    Add Component から shapes を選択

    形を変える

    以下のような感じで、shape Type を Rectangle に設定して、Roundness Per Corner にチェックを入れると上の左右だけに角丸をつけられます。

    このようにこのコンポーネントを使うと他にも、5角形など様々な形を選択でき、角丸の設定も容易にできるため、ゲームのようなリッチなUIではなく、Web埋め込みなどで使う場合や、業務用のプロジェクトにちょうどいいなと思います。

    角丸にする
    私の設定例
    Bodyのボタンがタブ選択ボタンの見た目としていい感じになった!
    Bodyのボタンがタブ選択ボタンの見た目としていい感じになった!

    まとめ

    コードを書いてUIを作っていける UI Toolkit 等もあるので、そちらも試してみたいと思います。

  • Unity 回転の中心位置が微妙で使いづらい問題

    Unity 回転の中心位置が微妙で使いづらい問題

    ⚠️ この記事はカスです。何も解決していません。ごめんなさい。

    以下のようなコードを書いてゲームオブジェクトに追加する。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class RotateObject : MonoBehaviour
    {
        public float rotationSpeed = 100f; // 回転速度
    
        private Vector3 lastMousePosition; // 前回のマウス位置
    
        void Update()
        {
            if (Input.GetMouseButtonDown(0)) // マウス左クリック開始時
            {
                lastMousePosition = Input.mousePosition;
            }
            else if (Input.GetMouseButton(0)) // マウスをドラッグ中
            {
                Vector3 delta = Input.mousePosition - lastMousePosition; // マウス移動量
                float deltaX = delta.x * rotationSpeed * Time.deltaTime; // X方向の回転量
                float deltaY = delta.y * rotationSpeed * Time.deltaTime; // Y方向の回転量
    
                // オブジェクトを回転
                transform.Rotate(Vector3.up, -deltaX, Space.World);  // 水平方向の回転
                transform.Rotate(Vector3.right, deltaY, Space.World); // 垂直方向の回転
    
                lastMousePosition = Input.mousePosition; // マウス位置を更新
            }
        }
    }
    

    上記の動画のように回転の中心位置がずれいて、使いづらい😭

    原因と解決策

    この靴のモデルはBlnderで自分で作ったものでした。

    回転の原点がずれているのかをまず確認しました。

    確認するにはUnityのシーンビューの上部の Pivot/Center 切り替えボタンをクリックして Pivot に切り替える。

    どうやら大丈夫そうです。シーンビューでは心地よくオブジェクトを回転させることができました。

    嘘です!!!

    まだ欠陥があります!!!

    後で直そうと思うので、とりあえず記事を公開しました。

    ごめん!!!!

  • Unity Git 管理 with Git LFS

    Unity Git 管理 with Git LFS

    この記事は?

    Unity のプロジェクトをGitで管理する方法です。SourceTree などを使った方法は直ぐに検索に出てきますが、すでにGitを使ったことがある方に向けた記事です。

    使用環境

    • Apple Silicon M1 MacBook Air
    • 16 Gb
    • macOS Sequoia 15.0
    • Unity 2022.3.31f1

    やり方

    Unityの設定
    .gitignore の作成
    Git LFS

    の3つの設定を順に紹介していきます。

    Unity 側の設定

    Unity のメニューの Edit/ Project Settings を開きます。

    左側のメニューからEditorを選択。

    Asset Serialization という項目があるので Force Text にします。(おそらく標準でなってる?)

    Unity Settings

    シーンやPrefabをテキスト形式で保存する設定のようです。
    Gitでの競合の解決を簡単にするために、バイナリ形式でなくテキスト形式にしました。

    Gitの設定

    Gitで管理したいファイルは下記の通りです。

    • Assets
    • Packages
    • ProjectSettings
    • UserSettings

    必要のないものはignoreに設定します。

    ルートディレクトリに .gitignore ファイルを以下の内容で作成しました。

    # Unity関連の生成ファイルを無視
    [Ll]ibrary/
    [Tt]emp/
    [Oo]bj/
    [Bb]uild/
    [Bb]uilds/
    [Ll]ogs/
    
    # 特定のプラットフォーム関連ファイル
    [Dd]ebugPublic/
    [Mm]emoryCaptures/
    [Uu]ser[Ss]ettings/
    
    # Visual StudioやJetBrains Rider関連
    .vscode/
    *.csproj
    *.unityproj
    *.sln
    *.suo
    *.user
    *.userprefs
    *.pidb
    *.booproj
    *.svd
    
    # その他
    *.swp
    *.lock
    *.idea/
    

    GitLFSの設定

    標準のGit を使っていて、サイズの大きなもののアップロードで警告が出たことはありませんか?

    ゲーム制作では3Dモデルや画像データなどが膨大になってしまうので、これでは厳しいです。

    そこでGit LFS を使用します。

    Git LFS(Git Large File Storage)は、大きなファイルやバイナリファイルを効率的に管理するためのツールです。

    Homebrew で Git LFS をインストール

    インストールしたことがない方はBrew からインストールします。

    https://formulae.brew.sh/formula/git-lfs

    brew install git-lfs

    インストールしたことある方はversion を確認します。

    git lfs --version

    Git の初期設定

    プロジェクトのディレクトリへ移動します。

    cd /あなたのプロジェクトディレクトリ

    Git を初期化します。

    git init

    LFSの有効化をします。

    git lfs install
    Updated Git hooks.
    Git LFS initialized.

    上手くLFSが有効化されると返答されます。

    管理したいファイルタイプを指定します。
    画像と3Dデータが重いので私は下記のように指定しました。

    git lfs track "*.png"
    git lfs track "*.fbx"

    あとは普段通りGit 操作します。

    git add .
    git commit -m "initial commit"

    補足 Git LFS が有効化されているか確認する

    git lfs ls-files

    上手くできていればした画像のように表示されるはずです。

    git LFS

  • レンタルサーバーで Unity WebGL 埋め込み This can happen if build compression was enabled

    レンタルサーバーで Unity WebGL 埋め込み This can happen if build compression was enabled

    WordPress にUnityで制作したものを埋め込む際に下記のようなエラーが出ました。

    WordPressの wp-content/upload の直下にビルドしたフォルダをアップロードしました。

    This can happen if build compression was enabled but web server hosting the content was misconfigured to not serve the file with HTTP Response Header "Content-Encoding: gzip" present. Check browser Console and Devtools Network tab to debug.

    これの解決方法です。

    サーバー側のGzip対応を確認

    私の利用しているロリポップではGzipに対応しています。

    https://support.lolipop.jp/hc/ja/articles/360048374954-GZIP%E3%81%AF%E5%88%A9%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B

    以下のように .htaccess を作成し、build フォルダや index.html があるディレクトリに .htaccess をアップロードしました。

    <IfModule mod_mime.c>
        # WebAssembly用のContent-Type設定
        AddType application/wasm .wasm
        AddEncoding gzip .gz
    </IfModule>
    
    <IfModule mod_headers.c>
        # gzip圧縮ファイルのContent-Type設定
        <FilesMatch "\.wasm\.gz$">
            Header set Content-Encoding gzip
            Header set Content-Type application/wasm
        </FilesMatch>
    </IfModule>
    
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTP:Accept-Encoding} gzip
        RewriteCond %{REQUEST_FILENAME}.gz -f
        RewriteRule ^(.*)$ $1.gz [QSA,L]
    </IfModule>

    公開できました!

    sudo arch -x86_64 gem install ffi
    arch -x86_64 pod install

    CocoaPodsの再インストール

    CocoaPodsのアンインストール

    sudo gem uninstall cocoapods

    CocoaPodsのインストール

    sudo gem install cocoapods

    依存関係をクリーン

    pod cache clean --all

    CocoaPodsのキャッシュクリア

    キャッシュのクリア

    rm -rf ~/Library/Caches/CocoaPods
    rm -rf Pods
    rm -rf ~/Library/Developer/Xcode/DerivedData/*
    pod deintegrate
    pod setup

    📕 参考

    cocoapods itallation
    https://cocoapods.org

    chruby
    https://formulae.brew.sh/formula/chruby

Home
About
Blog
Works
Contact