渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

Unity

Unity製のアプリをXcodeでプロファイリングするとCPUフレームタイムが常にMAXになる件

Xcodeのバージョンと僕の所持するiPhone6SのOSバージョンの差異から、ここ最近手元PCでビルドしていませんでした。たまには、Xcodeでアプリのプロファイリングでもしようと思い、まずはMacをHigh Sierraにし、Xcode10をインストールしました。 Mojaveがリリ…

UnityEngine.Object.nameアクセスするとGC Allocされる件

UnityEngine.Object.nameするだけで、ヒープ領域を毎回確保するようです。 Unityのプロファイラを見てて気づきました。 以下僕の環境における実績。

UnityでPSDが認識されなくなったときにチェックすべきポイント

UnityはPSDを読み込めてとても便利です。 便利なのですが、突然僕の環境でPSDが読み込めなくなってしまいました。 テクスチャとしては読み込めているのですが、中身が真っ白という状況...

micro:bitの角度センサーを使ってUnityで遊ぶ

let dx = input.acceleration(Dimension.X) micro:bitは、上記のようなコードで傾きが取得できます。 それを使ってmicro:bitを傾けるとサメの進む方向を変えるというものを作ってみました。 ※この成果物は最近パソコンを触ることにハマっている4歳の娘とゲー…

シーンビューのAnimation Materialsチェックボックスの意味

いつのバージョンからかは忘れたのですが、シーンビューのプルダウンにAnimation Materialsという項目が追加されました。 コレなんだろう?って思ってて時が経ち、先程偶然知ることができました。 ↓↓コレです

IJobParallelForTransformでキューブを回転させる

Unity JobSystemをとりあえずやってみる序 IJobParallelForで並列処理させるジョブを作ってみる IJobParallelForTransformを使ってTransformを並列処理させる この辺りの記事の続きにあたりますが、絶賛JobSystemの使い方を探し中です。 今回はたくさんのキ…

IJobParallelForTransformを使ってTransformを並列処理させる

前回、前々回とIJob、IJobParallelForを使ったJobSystemについて触れてきました。 今回は僕的には

IJobParallelForで並列処理させるジョブを作ってみる

前回はIJobインターフェースでJobSystemを使ってみました。 IJobインターフェースで作ったジョブは1つのWorkerThreadに処理を分散することしかできませんでしたが、今回はもっと多くのWorkerThreadに処理を分散させてみようと思います。

Unity JobSystemをとりあえずやってみる序

そろそろUnityのJobSystemをやらなきゃという思いにかられ、少しずつ始めてみようと思います。 実際JobSystemやECSを使わなくてもゲーム自体は作れると思いますが、それらを使うことで、浮いたリソースがクオリティアップにつながるのであれば、やらない手は…

Unityで.NET Framework 4.6以降を使用する際のRider対応

Unityで.NET 4.6以降をしようとすると、Rider上で以下のエラーが出てしまいました。 ※コード補完とか何も効かない状態です Project 'Assembly-CSharp' load finished with warnings: The reference assemblies for framework ".NETFramework,Version=v4.7.1"…

AssemblyDefinitionのイケてないところがわかってきた件

Unity2017.3のAssembly Definitionがコンパイル時間短縮の救世主になりそうな予感 - 渋谷ほととぎす通信 以前このようなAssemblyDefinitionは神だ!!という記事を書きましたが、実際その神を運用してみて分かってきたことがあります。 今回紹介するのはAsse…

神アセットConsole Enhancedが復活していた件

去年の7月の記事ですが、個人的に神アセットと崇めているConsole EnhancedがUnity2017になって動かなくなっていました。 しかし、おそらく去年の12月辺りからUnity2017以降でも動くようにアップデートされたようです。 ためしにUnity2018.2.5f1で試したとこ…

micro:bitとUnityを無線通信してみる

ググればいろいろ出てくるんですが、一旦自分でmicro:bitとUnityの無線通信をやってみます。 送信側micro:bitのAボタンを押して、文字列"A"を送信 受信側micro:bitで文字列"A"を受け取る 受信側micro:bitからUnityへ"A"を送る というアプリを作ってみます。 …

WaitForSecondsはキャッシュして使おう

Unityで演出をスクリプトでタイミングの調整をしたいときにWaitForSecondsを使ったりすることがあります。 刹那的に使うのは問題ないですが、以下のようにWaitForSecondsを高頻度で生成すると問題が出てきます。

CinemachineVirtualCameraが認識されなくなったときに見落としがちな2つのチェックポイント

UnityのCinemachine使用中に時々CinemachineVirtualCameraがCinemachineBrainに登録されなくて、アクティブにならないということが起きました。 そんなときにチェックしておきたいポイント2点をメモしておきます。

Unityとmicro:bit間のシリアル通信におけるResource busyトラブル

この辺りの文脈から最近micro:bitを触りだし、自分の子供と甥向けになにか作ってやろうと思っている次第です。 microbitで娘と夏休みに電子玩具をつくってみよう。とりあえず、サーボモーターあたり注文done #大人の夏休みの宿題— bao_bao_ni (@bao_bao_ni) …

SpriteAtlas、SpritePackerどちらも一括でアトラスサイズを変更できるわけではなかった話

僕の勘違いの共有みたいになりますが。 最近のUnityの主流?のSpriteAtlasでは個別に書き出したSpriteをアトラスにパックした後、アトラス全体のサイズを変更できるのかなって思っていたんですが、そうではなかったんですね。

SpriteAtlasは引き続きAllow RotationとTight Packingは使用できません

SpriteAtlasの不具合が引き続き継続中のようで、Unity2018.2.0f2でもAllow RotationとTight Packingにチェックを入れると表示が崩れます。チェックを外せば表示崩れは起きなくなります。 今回はUnity2018.1.0f2から2018.2.0f2にアップデートした際に、Sprite…

Unity2018.2.0f2にアップデートした際のエラー対応

Unity2018.1.0f2からUnity2018.2.0f2にアップデートした際のエラー対応備忘録です。 ※皆が皆起こるエラーではありません。環境によっては起こります。 An error occurred while resolving packages: Package com.unity.cinemachine@2.1.12 has invalid depen…

Unity スクリプトでMultipleのSpriteを取得する

このようなテクスチャを用意し、 Texture TtypeをSprite (2D and UI)に設定。SpriteModeをMultipleにします。 Projectブラウザを見るとこのようにテクスチャにぶら下がる形でSpriteが並びます。 ※Sprite Editorでスライス処理は割愛しています このようにテ…

UnityのシェーダLODを試す

今回は実は使ったことなかった機能シリーズ、「シェーダLOD」を試してみます。 Unityでシェーダを書いているとよく目にするLOD 200のような値。 これはシェーダ自身でLODを使用する際に使うLOD値です。 例えばLOD 200のサブシェーダが実装されているなら、Sh…

Riderのコードフォールドをデフォルトで解除する

Rider小ネタ。 Riderのデフォルト設定がコードフォールドを適用しています。 ※このような左側の+,-ボタンでフォールドされる 僕自身あまりコードフォールドをしない方が作業効率が良いです。 (いちいち閉じたものを開くのが面倒くさい & コードを隠すメリッ…

Unityちゃんシェーダを読んでまとめた

最近3Dキャラの肌の表現に興味が湧いていて、とりあえずちゃんと読んでいなかったUnityちゃんシェーダの肌部分を読んでみました。 以下、その備忘録となります。 読んだ部分というのは、Unityちゃんアセット同梱のCharaSkin.cgのfrag関数内です。ここに肌の…

transformの取得に最適化がされていた件

最近多い、ふと気になったシリーズです。 昔(2~3年前)はtransform.localPosition = Vector3.zero;のようにtransformプロパティは直接アクセスすると、GetComponent()が内部的に実行されていて、処理負荷的に重いからキャッシュした方が良いよ!っていう話を…

UnityEngine.MathfとSystem.Mathどっちを使うのが良い?という話

ふと気になったシリーズです。 Unityを使っていると、ありがたいことに様々な便利関数がラップ、または拡張追加提供されています。 例えばC#の算術関連クラスであるSystem.Mathをラップ & 拡張しているUnityEngine.MathfというものがUnityでは提供されていま…

UnityタイムラインのAnimationEventを受け取る方法と罠

UnityのタイムラインとAnimationEventを組み合わせた場合の備忘録。 AnimationEventを仕込んだAnimationClipを用意 AnimationTrackに先のAnimationClipをセット この場合、どうやってAnimationEventを受け取るか? PlayableDirectorではなくAnimator側で受け…

Unityのスケール1とMayaで書き出したFBXのスケール1を一致させる方法

ゆっくりとMayaを勉強していますが、あらためてMayaで書き出したFBXファイルをUnityにインポートした際のスケールのルールについて確認しようと思います。 Maya Unity 上図のように可能であればMayaの1とUnityの1を同じサイズにできたら、Maya Unity間のワー…

良い使い所求むC#の変換演算子

C#にはimplicit変換演算子というものがあります。 これを使用すると型をキャストすることなく変換できます。 テストコードはコチラ Hoge型 が int型 へ int型 から Hoge型 へ キャストすることなく変換しています。

Unity SetTargetBuffers、Blit、SetRenderTargetの関係性の謎にせまる

世界ふしぎ発見を見ながら記事を書いていたのでタイトルが影響を受けております。 2017年も残りわずか、この記事が今年最後の投稿になるかもしれません。来年もよろしくお願いいたします。 では本題へ camera.SetTargetBuffers Graphics.Blit Graphics.SetRe…

Unity2017.3のAssembly Definitionがコンパイル時間短縮の救世主になりそうな予感

Unity2017.2までは、各ソースはディレクリ命名ルールから以下の4種類のAssemblyファイルが生成されていました。 Assembly-CSharp-firstpass.dll Assembly-CSharp-Editor-firstpass.dll Assembly-CSharp.dll Assembly-CSharp-Editor.dll 詳しくはコチラをどう…