渋谷ほととぎす通信

完全趣味でやってる技術メモ。※所属団体とは一切関係がありません。

Unity

Unity 板ポリを比率を変えずにスクリーンサイズにフィットさせる

カメラ : 位置(0,0,-5) 板ポリ(board) : 位置(0, 0, 0) scale(1, 1, 1) 板ポリをスクリーンに縦横比率を変えずにフィットさせるサンプルです。 // 指定サイズの比率 float targetRatio= targetWidth / targetHeight; // 画面比率 float screenRatio = (float…

Unityスクリーン座標をワールド座標に変換する

個人的に時々必要になる且つよく忘れるコードなのでメモです。 この記事でも活用してて、 このようなスクリーン座標のマウスに追随してワールド座標にメッシュを描画するときに使用しています。 スクリーン座標 スクリーン座標は左下が原点で、右上にひくほ…

Unity2019.1でAndroidリリースに必要なKeyStoreを作成する

Unity2019.1.0もリリースされ、早速個人的な開発に使用しています。 本記事ではUnity2019.1.0でKeyStoreを作成したログを残します。 Build Settins > Player Settings > Publising Settings > KeyStoreManagerを使用します。 Create New > Anywhereでkeystor…

DOTweenで360度くるくる回転させたい

DOTweenを使って360度オブジェクトを回転させたい場合、少しいつもと違う設定が必要になります。 transform.DOLocalRotate(new Vector3(0, 0, 360f), 6f) .SetEase(Ease.Linear) .SetLoops(-1, LoopType.Restart); 普通に上のように書いてしまうと、オブジェ…

Unity CRI ADX2LEエラー「CriAtomPlugin is not initialized」の対処

今週のお題「特大ゴールデンウィークSP」 CRI ADX2LEをUnityで使用していて、シーン開始フローの中でACFファイルをロードしたタイミングで、 CriAtomPlugin is not initialized というエラーに遭遇した共有です。 ACFファイル自体はAtomCraftから正しく出力…

Unity2019 AndroidのPatchビルドが良い感じに高速

Unity2019.1から搭載されたAndroid向けのPatchビルド。 Android: Added Script Only Patching functionality, which sends only script-related changes to the device instead of repackaging the APK file. What's new in Unity 2019.1 - Unityより スクリ…

Rider2019.1アップデートで待望のIL Viwerが実装されている

その昔、UnityをMonoDevelopで開発しているときには身近に存在していたIL Viwer。 Riderに移ってからはそれが無く、不便に感じていましたが、とうとうRider2019.1で実装されました。 ILとは ILとはC#をコンパイルする際に作られる中間言語です。ILを読むこと…

Unityエラー「The same field name is serialized multiple times in the class or its parent class」の対処

The same field name is serialized multiple times in the class or its parent class. This is not supported: Base(MonoBehaviour) _hoge UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) エディタで実行中は問題なかったのですが、Android向けにビ…

Unity SpriteRendererで表示した画像をドラッグして端から端までピッタリ表示する

結論 X座標ドラッグ可能距離 = 画像サイズ / PixelPerUnit - orthographicSize * (Screen.Width / Screen.Height) Y座標ドラッグ可能距離 = 画像サイズ / PixelPerUnit - orthographicSize で割り出せます。 ※平行投影カメラが前提 以下のコードをドラッグ処…

Unity2019 PackageManagerがメニューに表示されなくなった時の対処法

2018.3.7f1からUnity2019にアップデートした際に起こったPackageManager周りのトラブル共有です。 タイトルの通り、WindowからPackageManagerの項目が表示されなくなる現象が発生しました。 Unity2019では使用できないバージョンがmanifestで指定されている…

コルーチンの引数にはref、outは使用できない

タイトルの通り、コルーチンで少しハマったので共有です。 IEnumerator Hoge (ref int foo) { yield return null; foo = 1; } このようにIEnumeratorを返す関数にはrefやoutが使えず、以下のようなエラーが出力されます。 error CS1623: Iterators cannot ha…

Unity Undefined symbols for architecture arm64というエラーがXcodeで吐かれたときの対応

iOS向けネイティブプラグインを書いて、Unityでビルドしたらこのようなエラーに見舞われました。その備忘録です。 Undefined symbols for architecture arm64: "_OBJC_CLASS_$_MFMailComposeViewController", referenced from: objc-class-ref in CustomPlug…

UnityのAndroidビルドでApplication.persistentDataPathが取得できない件

UnityでAndroid向けビルド時、C#6.0の新機能文字列補間におけるハマり案件共有です。 実機でApplication.persistentDataPathがNullになる var path = $"{Application.persistentDataPath}/hogehoge"; Debug.Log(path); と記述すると、UnityEditor上では正常…

Android向けIL2CPPビルド失敗時に2点考えられること

UnityでAndroid向けにIL2CPPビルドした際に以下のようなエラーが出た場合の対策をメモしておきます。 Exception: /Applications/Unity/Hub/Editor/2018.3.7f1/Unity.app /Contents/il2cpp/build/il2cppcore/il2cppcore.dll did not run properly! il2cppcore…

Unity ビルド後のAndroidManifest.xmlの書き出し場所

Android開発している際に、AndroidManifest.xmlをごにょごにょ書き換えることが多々あります。最終的にビルド時に書き出されるAndroidManifest.xmlの位置をメモしておきます。 Unityプロジェクトルート/Temp/gradleOut/build/intermediates/ merged_manifest…

Unity Xcodeビルド時に必要フレームワークを自動的にセットする

今更感があっても、自分が分からなかったら記事にする大庭です。 とあるプラグインを導入しているとき、Xcodeのビルド設定にフレームワークを別途追加しないといけないという要件があり、ジェンキンスでビルドを自動化しているので、その辺りも自動化させて…

iOS、Android実機でTouchScriptがuGUIのScrollViewの挙動をおかしくさせた時の対処法

AssetStore上でリリースされている最新のTouchScriptを使っているシーンで、uGUIのScrollViewを使用すると、UnityEditor上では正常に動作しますが、iOSやAndroid上では、少し動かしただけですごい量スクロールしてしまいます。 TouchScriptを使用していない…

Riderエディタ上でマウスホイールすると拡大縮小するのを止める

そういうものだと思って少し諦めていた、意識しないようにしていた案件なのですが、RiderでC#を書いている時、いきなりギュン!!!っと文字が拡大(または縮小)する時があります。 そう、マウスホイールです。 ※正しく記載すると⌘+マウスホイール 私はマジッ…

CRI ADX2×Unity サウンドのループ再生方法

UnityでCRI AD2を使ってループサウンドの実装方法をメモっておきます。 CRI ADX2の思想的に、サウンドの設定はサウンドデータ側に埋め込んでおきましょう。ということなので、ループの設定自体もサウンドファイル内に埋め込まれる形になります。 AtomCraftを…

Unity2019.1.0b1、b2のリリースノートをサラッと読んで気になったところ

Android: Added Android notch support Androidがノッチに対応したようです。 Android: Added OpenGL ES 3.2 support AndroidがOpenGL ES3.2対応。 Android: Added support for ASTC HDR texture formats AndroidがASTCのHDRテクスチャをサポートしたようで…

CRI ADX2と自分の感覚的がずれていてハマったポイント3点の共有

絶賛Unity×CRI ADX2を触っているのですが、自分の感覚とずれていて、少しハマったところをメモしておきます。 1.一時停止メソッドを叩いてもステータスはPlaying CriAtomExPlayer(Unityで言うAudioSource的なもの)には、ステータスが存在し、そのEnumが以下…

CRI ADX2を使用したらUnity上で音がキュルキュル鳴った時の対処法

こちらの記事を参考にADX2をUnityで使用するセットアップをしました。分かりやすく説明されているのでオススメです。 ただ、1点ハマりました。 先の記事があくまでADX2LEについて書かれているもので、僕はプロ版のADX2を使っていました。 ツールのUIが、ほぼ…

Unity製MobileNotificationsのローカルPush通知アイコンをアプリ起動時に消す

www.shibuya24.info 先日執筆した記事の中で出てきた問題点が解決したのでその共有。 通知をタップしたら通知アイコンも消えるのかなって思っていたらですね、消えません...。Unity製Mobile NotificationsでローカルPush通知を実装する(無料) - 渋谷ほととぎ…

Unity製Mobile Notificationsで無料でローカルPush通知を実装する

Unity製のモバイル端末向けローカルPush通知パッケージMobile Notificationsというものを試しました。 必須要件 Android版の対応 通知チャンネルを登録 通知を予約する 通知アイコンが出ない問題 iOS版の対応 Android版との違い 通知アイコン消せない問題 ま…

Unity TouchScriptの実機ビルドエラーにハマる

Unityアセットストアには2013年頃から存在するTouchScript。 手軽にタップやドラッグ、ピンチインアウトなどの特にモバイルデバイスではよく必要とされるが、実装するのは少し面倒くさい、これらの機能をお手軽に追加することが出来るヘルパーアセットです。…

これだけはやっておきたいRider設定ランキング

PCが新しくなり、諸々気持ちが一新し、普段Unity開発で使っていたRiderも初期化されました。 設定ファイルをそのままインポートすれば良いのですが、あえて最低限これだけはやっておきたい設定が何だったのかをランキング形式で確認したいと思います。 Rider…

Unity RenderTextureのメモリを解放するのはReleaseが良いの?Destroyが良いの?

RenderTextureのメモリ確保と解放タイミングを確認し、Release関数、Destroyどちらでも解放されることが分かりました。 2種類どちらを使った方が良いかという考察をしています。 普通に考えると、RenderTexture自体がクラスなのでGCを抑えるためにnewの回数…

Unity RenderTextureのメモリ確保と解放タイミングの落とし穴

RenderTextureを動的にスクリプトから生成して、Blitしてごにょにょするというフローの中で、どのタイミングでメモリが確保され、いつ解放されるのか確認したいと思います。 メモリのプロファイルということでUnity製MemoryProfilerを使います。 本環境はUni…

【WIP】Unityを使ってクリスマス的な何かを制作して季節を体感していきたい

僕は普段1日の大半を室内で過ごしています。外に出ている時間なんて計算すると4%位です。 気づけばそろそろクリスマス。娘がサンタさんに手紙を書いている姿を見かけました。 ということで、本ブログも季節感を取り入れていこうと思い、クリスマスをテーマに…

Unity2018.3.0からDynamicResolutionがiOSやAndroid端末で使えるようになっているので検証

先日リリースされたUnity2018.3の新機能をなめている最中です。本記事ではDynamicResolutionについて検証します。 DynamicResolutionとは? ランタイム中にレンダーターゲットの解像度を変更することができる機能です。 例 : 1920×1080で描画していたものを、…