orangegirl’s blog

Unityを使用していて気付いた点などのメモ帳

2d-extrasの導入でつまずいた話

UnityのTilemap機能の公式拡張ライブラリに、「2d-extras」という、GitHubに公開されているものがあります。

github.com


標準機能のままでは作成できない、オートタイルやアニメーションタイルが作成できるものなのですが、これの導入でちょっとつまずいたので、解決法とともに記しておこうと思います。

なお、この記事では、Unity2019.4.24f1を使用しています。



2d-extrasの導入方法でググると、だいたい、
「Packages/package.jsonの、denpendencies内に次の文を追加してください」
的なことが書いてあります。

こんな文です。
"com.unity.2d.tilemap.extras": "https://github.com/Unity-Technologies/2d-extras.git#master"


実際にpackage.jsonに記述すると、こんな感じ。

f:id:orange__girl:20210518181447p:plain


しかし、この記述に従って導入を試してみると、以下のようなエラーが発生してしまいます。

f:id:orange__girl:20210518181455p:plain


このエラーの解決法がググってもわからなくて、なかなか難儀したのですが、以下の海外サイトに解決法が記されていました。

gamedev.stackexchange.com


曰く、Unityのバージョンごとに、2d-extrasのブランチがあるから、末尾の#masterを環境に合わせたものにしてみてね、という感じです。

なるほど、冒頭の追加する文章の末尾にあった「#master」というのは、GitHubのブランチのことだったのか…と思いつつ、GitHubのページでブランチを覗いてみると、


f:id:orange__girl:20210518181452p:plain


あった!Unityのバージョンごとのブランチがある!


…というわけで、Unity2019.4.24f1の場合は、2019.4ブランチを使えばいいんじゃろ、ということで、package.jsonへの記述を以下のように変えてみたところ、無事に導入が完了しました。

f:id:orange__girl:20210518181435p:plain



どなたかの参考になれば幸いです。

iMac2019(27インチ)でVRカノジョを遊んでみた話

僕が所持しているiMac2019(27インチ)の最上位モデルは一応VRレディの性能を持っているので、そのうちVRで遊んでみたいなと思っていたのですが、実際にどの程度のクオリティで遊べるのか疑問もあったので、勢いでVR機器は買えないなあとも思っていました。

ネット上には、iMacでのVR体験談的なものはほとんどないですし。


そんな中、ふと思いついてネットを検索してみたら、やはりありました、VR機器のレンタルサービス!
サービスを提供している会社によって価格はマチマチですが、僕が狙っていたOculus Questの場合、2020年7月現在では一週間で約7000円というのが最安な感じっぽいでしょうか。

各社ともQuestはけっこう人気のようで、しばらく品切れ状態が続いていてたのですが、先日、ようやくレンタルすることができたので、その時の感想等を書いていきたいと思います。

ちなみに、今回利用したのはアストネスという会社のサービスです。
astoness.com

続きを読む

カメラを揺らしてもUGUIが揺れなくて困った話(と対処法)

Unityで制作中のゲームで、演出としてカメラを揺らそうと試みたところ、カメラは揺れるもののCanvas内のImageが揺れなくて困った…ということがあったので、備忘録として書いておきます。
なお、カメラを揺らすのはDoTweenのShakePositionを使用しています。



原因はCanvasの設定

原因は単純な話で、Canvasの設定を「Screen Space - Camera」にしていたせいでした。
(なお、「Screen Space - Overlay」にしている場合でも揺れません)

f:id:orange__girl:20200718101407p:plain

「Screen Space - Camera」にしていると、Render Cameraの位置とCanvasの位置が同期するので、UGUIの表示が揺れることはありません。

以下の画像では、Scene Viewではカメラごと豪快に揺れていますが、Game Viewでは何の変化もないので、ちょっと混乱してしまいますね。

f:id:orange__girl:20200718101535g:plain



Canvasの設定を「World Space」にする

Canvasの設定を「World Space」にすると、そのCanvasは3D空間上に通常のオブジェクトとして存在することになります。

「Screen Space」のようにカメラと位置の同期を行ったりはしないので、カメラを揺らすとCanvas内のImageやButtonが揺れるようになりました。

f:id:orange__girl:20200718101526p:plain

f:id:orange__girl:20200718101610g:plain


普段、Screen Spaceの二種類しか使う機会がなかったため、今回の件で困るまで、World Spaceのことは正直失念していました。

下記の記事が参考になりました。感謝です🙏

tech.pjin.jp

© Unity Technologies Japan/UCL

同人ゲーム作家がiMac 2019(27インチ)を購入してみた

はじめに

iMac 2019(27インチ・最上位モデル)を購入して3ヶ月経ったので、簡単ではありますが、2DCG系のフリーランスおよび同人ゲーム作家として、レビューをしてみようと思います。

iMacのレビューはネット上にたくさんありますが、あまり2DCG界隈やUnityを使用している方のレビューはないので、どなたかの参考になれば幸いです。

www.apple.com

続きを読む

Unityの人気アセット「Dynamic Bone」をSpineのモデルに適用してみる

Unityアセットストアで人気のアセットに「Dynamic Bone」があります。

https://www.assetstore.unity3d.com/#!/content/16743

女性の胸や長い髪(ポニーテールとか)、動物の尻尾などの、いわゆる「揺れもの」の挙動を簡単に実装できるアセットです。 

基本的には3Dモデルを動かすのを主目的としたアセットなのですが、Spine公式の海外フォーラムを見ていた時に、気になるスレッドを見つけました。

http://ja.esotericsoftware.com/forum/Dynamic-Bones-8392?p=38501

 

 要約すると、「SpineのモデルにDynamic Boneを適用したいんだけど、うまくいかないんだ」「うーん、俺もなんだよね…あ、わかった!こういうコツがあったんだよ」「なるほどね!」みたいな内容のスレッドです。

考えてみると、Spineのモデルは、板ポリのメッシュにボーンとウェイトを設定して動かしているようなものなので、Dynamic Boneも動きそうです。

機会があれば試したいな…と思っていたところ、「Unity AssetStoreまとめ」さんのイベントでアセットストアのバウチャーを25$も頂いたので、早速購入し、実験してみました!(汗人柱さん、ありがとうございました!)

続きを読む

NGUIのPopup Listのローカライズ

NGUIのLabelのローカライズは仕組みを覚えれば簡単なんですが、そのノウハウを元にしてPopup Listのローカライズをやろうと思うと、ちょっとハマるかもしれません。

 

NGUIでPopup Listを作る時、基本的にはUI Popup ListやらUI Spriteやらをアタッチしたオブジェクトの子にLabelを作成するかと思います。

f:id:orange__girl:20150530093118j:plain

こんな感じ。ここではシンプルに、Popup ListのOn Value Changeの箇所にLabelを追加して、Popup Listの選択内容をLabelに送っています。

f:id:orange__girl:20150530094215j:plain

 

さて、Labelのローカライズの時のノウハウを思い出すと、ここでもLabelに対してLocalizeコンポーネントを適用すればいいんじゃないか…と思いますが、これが罠です。

実際には、UI Popup Listの方をインスペクタでちょっといじるだけで完了です。とりあえず、ここではゲームに登場するマップ名をローカライズ対応するという目的のもと、Localization.csvに以下のような内容を記述しました。

f:id:orange__girl:20150530093853j:plain

 Localization.csvをインポートしたら、UI Popup ListのOptions欄に、KEYを記入しちゃいます。そして、Localizedというチェックをオンにします。

f:id:orange__girl:20150530094412j:plain

これで、子のLabelにはローカライズされた文字列が送られます。

f:id:orange__girl:20150530094941j:plain Key「forest」の日本語の時。

f:id:orange__girl:20150530094949j:plain Key「forest」の英語の時。

NGUIでの文字列ローカライズ

NGUIで文字列(Label)のローカライズをしようとネットで検索をかけた時に、最近のバージョンの情報がなかったので、使い方をメモしておきます。

NGUIの使用バージョンは3.8.2、Unityは5.0.2です。

 

ここでは、こんな感じのボタンを作成したいとします。

f:id:orange__girl:20150526093350j:plain日本語の時はこれ。

f:id:orange__girl:20150526093352j:plain英語の時はこれ。

 

①翻訳ファイルの作成

まずは、ローカライズしたい内容を記入したtxtかcsvのファイルを用意します。

一番上の行に、「KEY,言語1,言語2…」というように使用したい言語を記入しておきます。

その後は下の画像のように、KEY列に任意の文字、各言語の列に入力したい文字列を記入します。

f:id:orange__girl:20150526091208j:plain

文字コードはShift-JISなんかだと日本語が正常に表示されないみたいなので、UTF-8にしておくのが無難なようです。

僕はGoogleスプレッドシートで作成したものをcsvとしてDLして使いました。

DLしたファイルは、「Localization.csv」とリネームしておきます。 

 

②翻訳ファイルのインポート

csvを用意できたら、NGUIのExamplesフォルダにある「Localization.txt」を削除するか、違う名前に変更します。試してはいないですが、複数の設定ファイルがあるのも良くない気がしますので。

その後、先ほど用意したcsvを任意の場所に追加します。Localization.txt」があったのと同じ場所でも別に問題はありません。

f:id:orange__girl:20150526091642j:plain

 

③翻訳ファイルの実装

ここまで来たら、ほぼ終わったも同然です。

NGUIでUI Labelを適当に作成し、「Add Component」から「Localize」を適用します。

f:id:orange__girl:20150526091209j:plain

適用された「UI Localize」の「Key」欄に、csvで入力したKEYの文字を入れると、Preview欄に設定した情報が表示されます。

 f:id:orange__girl:20150526091206j:plain

Preview欄の言語設定の右のボックス(上の画像の「Close」や「閉じる」がある場所)をクリックすると、Scene、Gameウィンドウで表示が変わります。 

あとは、ゲームの起動時にシステム言語設定を取得し、任意のローカライズ言語に処理を振り分ければ完了です。下記ではシステムが日本語なら日本語、それ以外なら英語に振り分けています。

 

    void Start () {
        if (Application.systemLanguage == SystemLanguage.Japanese) {
            Localization.language = JP;
        }else{
            Localization.language = EN;
        }
    }

 

手順さえ覚えれば、わりと簡単に実装出来ます。