Unity2018 雑感
Unity2018を使っていての雑感
注意点
- 情報ではありません!雑感です!
雑感
- Unity Editor 上でWebViewを表示してほしい!(今は ZFBrowser or 自分でCEFをビルドしかなさそう!) Store表示するのにCEFからビルドしたっぽいChrome互換あるんだから、Editorとスマホで対応してくれないかな。。。 最近Web回帰になってきてるしね~ ほんとWebAssembly、はやらんな。。。スマホでできないと需要がね
- CEDEC2019で3Dモデルの衝突判定でよくできた感じのあたり判定してるのがあって面白そう! Unityが買収して機能に入れると面白そう!たぶん現状だとスマホでは動かなそう
- EditorGUI系のクラスを統一してほしい、おんなじ機能の関数がいろんなクラスにあって微妙に違うし
- UnityもHTMLでUIを作る系にはやくなれ! まだベータ段階だっけ?
- Editor GUI系はカオス! ScriptableObject作ってセーブするだけで、AsssetDatabaseに3つも関数でお知らせしないとだめって。。。
- Unityはほんとスマホ対応がおざなりになってる感がすごい
- UnityのShaderGraphを使おうと、LightWeightRender設定とかすると既存のStanderdShaderの一部が使えなくなるらしい※自動で変換スクリプトあるらしいが怪しい。。。
- Animatorがダメダメすぎて、Timelineもいまいち、名に使えばええんだろ?
- PackgeManageでAnimator2DのSpriteSkin経由でIKつかったら、SpriteSkinがパフォーマンス悪すぎて。。。どうしよう状態Unity2019でも完全解決してないぽいしLateUpdateやめました、って度やってるのがほんと。。。ダメダメぽい https://forum.unity.com/threads/sprite-skin-script-low-performance.747332/
Unityのなったらいいな
- EditorGuiLayoutいじるのが超絶面倒、早くHTMLで書けるように
- Editor用のスクリプトとビルドするスクリプトとか、#if UNITYEDITORとか、Editorフォルダに入れると通常スクリプトの#if UnityEditor Pragmaでは呼べないとか
- いい加減AssetBundleフォルダとかに入れたら勝手にAssetBundleになるとか
- Inspectorを複数使う設計になってないので、1つでLockしてほかで参考にするとかやりにくい
- Lockボタンとかよく使うのに超絶小さい
- Editorの停止状態でAnimatorとかAnimationの動確できないかな、というかPrefabEditoModeの時に再生するとその仮シーンで再生してください
- LayoutGroup系で位置調整してると、Prefab開くたびに位置調整が走ってGitに差分が出る。。。。
- いい加減FontをTextMeshに一本化してほしい、BMPフォント以外も使えるようにしてほしい、デザイナチームが毎回開発後半で文字が汚言ってくるので、置き換えを超絶楽にしてほしい
- DLL差し替えで、処理を変更できる仕組みを、スマホでもできる仕組みを作ってほしい、汎用処理スクリプト(データアタッチ、通信、ダウンロード、UIのPrefab生成、イベントの完全コンポーネント化)完全でなくても一部はできるはず+PlayMaker > それってどこのBluePrintだろって感じ
XcodeとC言語ソース
XcodeでC系ビルド忘備録
※2019/4/30 Xcode10系時点の記事です
なるべく最新の記事を参考にしてください。
Apple様は、コンパイラなどを独自のものに変えて、仕様が変わりやすいです!tdbとかな!
Xcode用のFramework作成作業とか記事あるけど古くて微妙!
必要なもの
CMake
クロスプラットフォームにCビルドファイルを作成してくれるすごいやつ
cmake.orgCMake用の「Toolchain」ファイル
CPU Platform設定などのコンパイラに食わせるMakeファイルを作るための設定ファイル(たぶん!)
Xcode向け(Xcode上(Simulator)と実機上)に出力が必要(arm7 / arm7s / arm64 /arm64e / i386 / x86_64).aファイルへのPackの仕方が微妙だが、新しめ XcodeProjectも出力できる!
GitHub - leetal/ios-cmake: A CMake toolchain file for iOS, watchOS and tvOS C/C++/Obj-C++ development.aファイルへのPackの仕方がよいが、古い
GitHub - cristeab/ios-cmake: A toolchain file and examples using cmake for iOS development (this is a fork of a similar project found on code.google.com)
対象のC++ソース
Xcodeでの取り込み
- makeしてaファイル&dylink(静的リンク)を作成(Simulator用と実機用で分けたほうが良いのか?お作法がよくわからん)
- XcodeのBuild Settingへ上記ファイルフォルダとHeaderフォルダ指定
- 上記2ファイルをFrameworkへ追加 & 大体はC++の Standerd Library使ってるから libc++.tdbを追加
そして知る驚愕の事実 dylink は古くて tdb で間接指定するらしい。。。めんどくさ - 大体これでビルドエラーはなくなるはず!(まあtdb作らんと arコマンドでoファイルに解凍しないといけないぽいし複数使ってるとライブラリがかぶったり。。。ほんとめんどくさい)
- この後も罠がいっぱい!swiftだとheader取り込む用のBridge Headerファイル作るとかFrameworkにするとか!
よいC++ライフを!
Unity リソース管理 2
リソース管理の理想の実現に向けて
注意点
- Unity5.3.4 時点での記事です。
追記(2019/4/30):Unity公式が出している Asset BundleBrowser が非常におすすめ! assetstore.unity.com
追記(2019/4/30):下記のような実装がすでにあるのでこの記事へたどり着いた方は Addressable Asset System をお使いください。 ※個人的には、表面上取り繕っただけで、根本的な使いにくさの改善にならないのがネックです。
要件
単一のパスを渡せばリソースがどんな環境でもロードできる!
- Resources.Loadを上書きできるようにする(Wraperクラスをつくる)
- 抽象クラスから各種Loaderを作れるようにする(あとから環境追加に対応できるようにする)
ロード(ビルド)モードが選択もしくは半自動で設定される
- 初期化処理時にモード選択する
* リソースの優先度を決める(複数の方法から優先順位でロード方式を決定する)
- 初期化処理時にモード選択する
実現に向けた要件詳細
- パス形式固定
- モード種類決定(Editor/Build時)
- Resources.Load関数を上書きできるWraperクラスで必要な関数定義
- リソースLoadの優先度決定
大体、大枠はこんな要件で、ソースを組んでいくかな。。。
実際の技術交えて、来週から本気出す?感じで記事を書いていく予定
Unity リソース管理 1
リソース管理の理想
理想
- 何も考えずにResources.Loadだけ使いたいんじゃ!(無理だがな!公式も用意しといて使うなとかどんな罠だ)
注意点
- Unity5.3.4 時点での記事です。
- 追記(2019/4/30):Unity公式が出している Asset BundleBrowser が非常におすすめ! assetstore.unity.com ※Unity2019になっても、根本システム改変せず Addressable Asset System でお茶を濁そうとしているのには。。。やっとPrefab in Prefab来たーが2つ同時編集できないのが不満。。。
問題点
- Resourcesフォルダ運用からのAssetBundle化がうまくいかない問題
- Pathの大文字/小文字問題
- 既存リソースをまとめる作業が大変
- パスからAssetBundle名が逆引きできなくなる
- AssetBundleの仕組みがいけてない問題
- WWWCacheの動作がいけてない
- 基本、非同期Loadしか対応していない
- Unity公式のAssetBundleLoaderがいけてない。。。 使い方のお手本としては最高!
- WWWCacheの動作がいけてない
- 追記(2019/4/30):
- Manifest単体ファイルの情報がHash値だけと少なすぎる (せめてサイズとか、ユーザー付与バージョンとか、差分情報がわからないとAssetBundle本体ダウンロード判定やユーザー表示に使えない)
- ダウンロード済みのファイルチェックがしにくいレベルを超えて終わってる。。。キャッシュは使っちゃならんね。。。ファイルで保存して自分管理
開発時のリソースロード方法の移行理想
UnityEditor
- Resourcesロード
- AssetBundleロード
- Editor内のLocalリソース(AssetDatabase)
- ローカルファイル(WWWCache or LoadFile)
- ネットワークファイル([Download & LoadFile] or [WWWCache])
SmartPhone上
- AssetBundleロード
- ローカルファイル(WWWCache or LoadFile)
- ネットワークファイル([Download & LoadFile] or [WWWCache])