Unity NGUIのUI Labelのフォント名をスクリプトで取得

Unity NGUIラベルで指定のフォントを使っているものだけ抽出するのに、
必要なので調べてみた。

UILabel label = targetObject.GetComponent<UILabel>();

// Debug.Log("label.trueTypeFont.fontNames:" + label.trueTypeFont.fontNames.ToString());

Debug.Log("label.trueTypeFont.fontNames:" + label.trueTypeFont.name.ToString()); //これでフォント名取得できる!

label.trueTypeFont.fontNamesでは取得できないので注意

Unity NGUIのローカライズをスクリプトからKey指定で変更可能に

上記のようにNGUIUI Localizeで用意してあるローカライズ文言をスクリプトから、切り替える方法。

targetLabelGameObject.GetComponent<UILocalize>().key = "GOOD";

対象のUI Labelと同じgameobjectにUI Localizeコンポーネントがアタッチされていれば、これでOK!

ただし、UILabelのテキストが即時変わらない事があるので、
その場合は、一度下記のように非アクティブ→アクティブにすると反映される。

targetLabelGameObject.GetComponent<UILocalize>().key = "GOOD";
targetLabelGameObject.SetActive(false);
targetLabelGameObject.SetActive(true);

Unity2019 2.12f1で、AndroidのUnityロゴスプラッシュが紫色に

環境

  • Unity2019 2.12f1
  • MacOS 10.15.1
  • Androidビルド

上記環境で、Androidで実行するとスプラッシュから紫色になって、
logcatでエラーも吐かない原因不明の状態になった。

デフォルトのUnityロゴのスプラッシュさえ紫色に…

PlayerSettingや、Graphicsなどの設定おResetして、
デフォルトの状態にしても状態が回復せず、

別のSceneを読み込んでもデフォルトのskyboxが出るだけ。



原因がわからず、とりあえずUnityプロジェクトを新規作成し、
作ったデータをExportして移行したら…
直った!

Unity2019 2.12f1で、Androidビルド時に「Shader compiler: Compile Hidden/CubeBlend – Pass 0, Fragment Program: Internal error, unrecognized message from the shader compiler process. Please report a bug including this shader and the editor log.」

環境

  • Unity2019 2.12f1
  • MacOS 10.15.1
  • Androidビルド

Androidでいつものようにビルドしていると、下記エラーで表示される

Shader compiler: Compile Hidden/CubeBlend - Pass 0, Fragment Program: Internal error, unrecognized message from the shader compiler process.  Please report a bug including this shader and the editor log.

ググると下記記事に参考になりました。

https://forum.unity.com/threads/unity-2019-2-7-build-ios-crashes-in-shader-compile.757754/

Unity2019 3.0(beta)から、UnityShaderCompilerファイルをコピーし、
Unity2019 2.12f1のUnityShaderCompilerファイルを上書きすれば解決するとの事。

こういうフォルダにはいっている→「/Applications/Unity/Hub/Editor/2019.2.12f1/Unity.app/Contents/Tools/UnityShaderCompiler」

実際やってみたけど。
本当にエラーがなくなりました。

また、上記フォーラムにありがたいことのUnity2019 3.0(beta)のUnityShaderCompilerだけ添付してくれている人もいる。(Unityごとダウンローづする手間が省ける)

Macで、Unity2019でビルド時に何度も、「”〜〜”は、開発元を検証できないため開けません。」と出る場合

久々開くmacで、UnityでAndroidビルドしていると何度も下記エラーで、2時間ぐらいとられたので、メモ。

ビルドの途中で、何度も、「”arm-linux-androidabi-objcopy”」は、開発元が検証できないため開けませんと、ビルドがコケてエラーがでまくるので、注意。

下記対処法



2は、システム環境設定 > セキュリティとプライバシー を開いてもOK。

この時、4の対象アプリが表示されない場合は、一度、1のダイアログ上で、「キャンセル」をクリックして、3,4の画面を開くを「このまま許可」のボタンが表示されるようです。

すると次に、1のダイアログ画面がでた時は、「開く」のボタンが表示されているので、開くを押す。

これで、1つずつ新しいエラーを許可することで最後までビルドが走りました。

ただ、毎回ビルドが途中で失敗するので非常に面倒でした。


私の場合、この作業をAndroid-NDK周りのアプリが大量にひっかかるので10回程度繰り返しました。。。aabファイルだったので、一回一回のビルドが時間かかりたいへんだった。

まとめ

キャンセルして、許可して、今度同じエラーがでたときに「開く」を繰り返す。面倒だけど、がんばった。

git cloneで、「fatal: unable to access 〜Peer reports incompatible or unsupported protocol version.」

久々入るCentOS7のサーバで、git cloneしようとしたらこんなエラーが、

[root@hoge sandbox]# git clone https://github.com/〜〜〜〜〜.git
Cloning into '〜〜〜〜'...
fatal: unable to access 'https://github.com/〜〜〜〜〜.git/': Peer reports incompatible or unsupported protocol version.

curlが古いのが原因らしい。

[root@hoge sandbox]# yum update curl

curlをアップデートしたら解決。
無事git cloneできました。

Unity 1行で演出でクオリティアップするCameraPlayアセットめも

たった1行でこのクオリティのカメラ演出ができるAsset。

https://assetstore.unity.com/packages/tools/particles-effects/camera-play-60790

ちょっと購入してみたので感想メモ。

CameraPlay.Glitch(); //これでグリンチエフェクトが実現できる

using 〜〜も必要ない。 どんなけ楽なんだw

さすが有料な優良アセット。

定期的にSale等しているので要チェック。

ただ、Cameraを複数重ねて使っているとうまく動かない場合があるので要確認。あとスマホアプリで出す場合容量が膨れ上がる可能性があるので、不要な部分を削除するなり調整する必要がありそう。

あとwebのドキュメントもある
http://www.vetasoft.store/cameraplay/Effects

ここらへんもメモ

Note:

The effect is set by default on the main camera, if you want to change the current camera us CameraPlay.CurrentCamera and select the new camera All the other effect will use the new current camera.

CameraPlayのエフェクトをかける対象カメラを別のカメラに変更する方法

CameraPlay.CurrentCamera = anotherCam.GetComponent<Camera>();

Unity 「Screen position out of view frustum (screen pos〜」でCameraがおかしくなる

下記エラーが大量に、Unity2019 2.12f1にアップデート後に発動するようになった。

Screen position out of view frustum (screen pos 579.015625, 713.140625) (Camera rect 0 0 862 1002)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32)

しらべてみると、MainCamera > orthographicsizeが「NaN」とおかしい値に!

実行まえは下記のように正しく入っている。

特にスクリプトでは参照以外にCameraの値を変える事はしていないのだが、 原因がわからずとりあえず、スクリプトでSizeを指定すると直った。

cam = GameObject.FindGameObjectWithTag("MainCamera");

cam.GetComponent<Camera>().orthographicSize = 7;

//float aspect = (float)cam.GetComponent<Camera>().pixelWidth / cam.GetComponent<Camera>().pixelHeight;

古いXcodeをアップデートしようとしても、エラーできない。

UnityHubで、unity2019を扱う際に、iOSビルドサポートが必要だが、 何度やっても、インストール途中で止まる。 このマシンでxcodeを1年近く使っていないのが問題か。
久しくアップデートしていないせいか、xcodeが起動しない。 xcodeのアップデートもうまくいかない。

install logは下記

Xcode[2358]: Package: PKLeopardPackage <id=com.apple.pkg.MobileDeviceDevelopment, version=10.3.9000000000.1.1488876279, url=file:///Applications/Xcode.app/Contents/Resources/Packages/MobileDeviceDevelopment.pkg> Failed to verify with error: Error Domain=PKInstallErrorDomain Code=102 "The package “MobileDeviceDevelopment.pkg” is untrusted." UserInfo={NSLocalizedDescription=The package “MobileDeviceDevelopment.pkg” is untrusted., NSURL=MobileDeviceDevelopment.pkg -- file:///Applications/Xcode.app/Contents/Resources/Packages/, PKInstallPackageIdentifier=com.apple.pkg.MobileDeviceDevelopment, NSUnderlyingError=0x7feaec7f2c00 {Error Domain=NSOSStatusErrorDomain Code=-2147409654 "CSSMERR_TP_CERT_EXPIRED" UserInfo={SecTrustResult=5, PKTrustLevel=PKTrustLevelExpiredCertificate, NSLocalizedFailureReason=CSSMERR_TP_CERT_EXPIRED}}}

上記エラーで ぐぐると色々問題が。 https://stackoverflow.com/questions/58550284/mobiledevice-pkg-untrusted-cannot-open-xcode-after-os-x-update

一番よさそうなのが、xcodeをアンインストールしてから、 入れ直した方が良さそう。


xcodeを関連ファイルをまとめてアンインストール。
↓削除参考

https://qiita.com/UJIPOID/items/015805c89bddca540129

削除する際は、sudo権限でじゃないとアンインストールできないものもある。


ついでに、macのOSアップデートをサボっていたので、 macOSをHigh sierraから catalina へ飛び級アップグレード。

macOSのアップグレードはうまくいったので、次はxcode。

そして、xcodeをappstoreからインストール。
install conponentsが満タンになっても数時間反応がなかったので、
macを再起動して再度xcodeを起動し、install componentを走らせたら直った!


macを再起動して再度xcodeを起動し、install componentを走らせたら直った!

あとは、UnityにモジュールにiOSビルドサポートがインストールできれば…

追記2019-11-17

無事UnityのiOSビルドサポートもインストールできた。!