タグ

2017年1月6日のブックマーク (9件)

  • RoslynをT4テンプレート内で使う - ぷろじぇくと、みすじら。

    Created at: 2015-12-04 Visual StudioにはT4テンプレートというソースコードを生成する機能があるのですが、その中からRoslynを使おうというお話です。 T4テンプレートはVisual Studioと統合されていることとC#でテンプレートのコードを書いて、C#, VB, TypeScriptなどのコードを吐き出せます。 例えば… クラスライブラリアセンブリ読みこんで、その型情報をもとにコードを生成する EnvDTEクラスを使ってVisual Studio IDEの情報(つまり現在編集中のコードの情報)を元にコードを生成する のような感じで、アセンブリを読み込んでコードを生成するという使い方はよく見かけます(プロキシコードの生成とか)。 アセンブリを読み込んでコードを生成するということは「アセンブリがコンパイルされている」ことが前提になります。 例えばプロキ

  • neue cc - UniRx 5.0 - 完全書き直しによるパフォーマンス向上とヒューマンリーダブルなスタックトレース生成

    UniRx(Reactive Extensions for Unity)のVer 5.0が昨日、AssetStoreにリリースされました。前回が4.8.2で6月なので、半年ぶりで、今回はメジャーアップデートとなります。現在の最新であるUnity 5.3(の新機能)に対応というのもあります、が、今回の目玉は書き直しです。半年間なにやっていたかというと、書き直そう!いよいよやっと重い腰を上げてスタックトレースに優しいコードにしよう!と思い立って始めてみたもののメンドウくささが極まって挫折して放置。してたんですが、先月ぐらいに、いい加減に手を付けたくて、ちょっとうちの会社の仕事時間を貰ってゴリゴリ進めてやっと終わりました。 GitHub - UniRx UnityAssetStore - UniRx とりあえず分かりやすい成果としては、スタックトレースです。 var rp = new React

  • neue cc - Unityでのボクシングの殺し方、或いはラムダ式における見えないnewの見極め方

    Happy boxing! UniRxの前回リリース(UniRx 5.0.0)でパフォーマンス向上を果たしたと書きましたが、まだやり残したことがありました。それがボックス化(boxing)の殺害です。ボックス化は単純に言うと、せっかくの値型が箱に入っちゃってGCゴミが発生してGCがーーー、というもの。避けれるなら避けるべし。あ、ちなみに今回の内容は特に別にUnityに限らないふつーのC#の話です。 それと、というわけかでUniRx 5.1.0リリースしました、アセットストアから落とせます。基的な内容は以下に解説するボックス化を徹底的に殺害したことによるパフォーマンス向上です。 ボックス化とジェネリクス GCって、別に見えてるnewだけで発生するわけでもありません。見えてるものを警戒するのは大事ですが、見えないものを見てないのは片手落ち感が否めない。そんな見えないものの代表例がボックス化で

    tarchan
    tarchan 2017/01/06
    >t1.GetType() と書いてもボックス化が発生します。その場合、 typeof(T) と書くことで避けられます。
  • neue cc - Unityにおけるコルーチンの省メモリと高速化について、或いはUniRx 5.3.0でのその反映

    UniRx 5.3.0をリリースしました!今回のアップデートは、内部的な最適化、です。最適化は、もうそろそろあんまやるところ残ってないよね、なんて思ってたんですが、じっくり考えるとそんなことなく割とあったので埋めました。それが表題のコルーチンの省メモリと高速化です。使い方次第ではありますが、場合によっては今回のアップデートでものすごく恩恵に授かる人もいればそこそこの人もいるかもです。ともあれ基的に内部的に変更してるだけなので、入れるだけでそれなりに高速化したりする可能性がそれなりにあります。 GitHub/UniRx AssetStore/UniRx 前回が2月だったので3ヶ月ぶりですね。あまりオペレータ追加がないので、次はオペレータ追加に集中したい気もする。なんか優先的に欲しいのあればリクエストもどうぞ(Observable.Windowとかいい加減そろそろ入れろよって話なんですが)

  • Update()を10000回呼ぶ | Unity Blog

    Unityにはメッセージングシステムと呼ばれる、ゲームの実行中に特定のイベントが発生した時に自動的に呼ばれる魔法のメソッドを定義できる機能が備わっています。これはとてもシンプルかつ簡単なコンセプトなので、特に初心者にはありがたい機能です。たとえば短に下記のようにUpdateメソッドを定義するだけで、自動的に毎フレーム呼び出されます! void Update() { transform.Translate(0, 0, Time.deltaTime); }しかし、経験豊富な開発者からすれば、このコードはちょっとモヤモヤします。 このメソッドは具体的にどのようにして呼び出されているかが明確でない。 シーンに複数のオブジェクトがあった時、どのような順序でこのメソッドが呼び出されるのかが明確でない。 このコーディングスタイルはインテリセンスが効かない。 「…System.Reflectionだ!そう

    Update()を10000回呼ぶ | Unity Blog
  • 【Unity】SpritePackerとAssetBundleについて - テラシュールブログ

    今回はSpritePackerとAssetBundleの挙動について少しメモします。 SpritePackerとAssetBundleといふ便利機能 SpritePackerでパックしたテクスチャアトラスはAssetBundleに自動的に組み込まれる SpritePackerでパックしたテクスチャアトラスの部分組込は出来ない AssetBundleの依存関係を構築しない場合、2重にテクスチャが読まれる事がある Spriteシェーダーを使用したマテリアルを用意する 関連 SpritePackerとAssetBundleといふ便利機能 SpritePackerは2Dゲームでよくある手法で、スプライトを一つにまとめる事でSetPassの発生を抑える機能です。この機能を使用すると、テクスチャにタグを設定することで、スプライトをテクスチャアトラスとしてまとめめる事が出来ます。 通常はスプライトを事前

    【Unity】SpritePackerとAssetBundleについて - テラシュールブログ
  • UnityのSpritePackerとAssetBundleを併用する。 - Qiita

    概要 普段はTexturePackerを使っているのでSpritePackerについてはよく知らなかったのですが、 「SpritePackerでまとめたテクスチャって別ファイルとして生成されないけどAssetBundle化したい場合どうするの?」 という趣旨の疑問を投げ掛けられたので、いろいろ検証してみました。 今回はその結果から得られた結論とざっくりとした手順を綴ります。 ※検証環境は Unity 5.3.1 です。 結論 パックしたテクスチャを同じアセットバンドルに突っ込めばOK! とっても簡単ね! 手順 1. Textureの設定 まとめたいテクスチャの設定は、 ファイルはResources外に SpriteModeをSingleに PackingTagを同じ値に 圧縮設定も統一 する必要があるよ。 TexAとTexBを一つのアトラスにまとめたい場合は、 こんな感じ。 2. Pack

    UnityのSpritePackerとAssetBundleを併用する。 - Qiita
  • UnityのuGUIのテキスト表示機能について解説してみる - テラシュールブログ

    UnityのuGUIでテキスト表示の扱いについて解説します。 目次 目次 Textの機能 文字のエフェクト 自動改行と禁則処理 フォントサイズと描画範囲 フォントがぼやける問題(uGUIの場合) Textの機能 TextはuGUIでテキストを表示する機能です。 作成するには、以下の操作を行います。 Hierarchy>Create>UI>Text (もしくはメニューバー>GameObject>UI>Text ) あとはTextの内容を差し替えることで画面にテキストを表示出来ます。またFontに自前のフォントを指定してフォントを変更したり、Font Sizeで文字を大きくしたり、Line Spacingで行間の幅を指定する事ができます。 文字の位置はAlignmentで決定します。テキストの位置を行の頭に合わせるか行末に合わせるか、またテキストの初期座標を範囲の真ん中にするか範囲の上にするか

    UnityのuGUIのテキスト表示機能について解説してみる - テラシュールブログ
  • 【Unity】スプライトの描画順制御を楽にするSortingGroup - テラシュールブログ

    昨日に引き続きUnity 5.6の新しい機能についてです。 スプライトの描画順制御 Order In Layerで制御した時の問題点 SortingGroupで描画順を制御 利用アセット 関連 スプライトの描画順制御 Unityのスプライトは、標準設定ならば*1、Sorting LayerとOrder In Layer、あとカメラから見たZ値で制御されます。 Sorting Layerが下の方が前面で、同一レイヤー内ならばOrder In Layerが高い方が前面に、Sorting Layerが同一かつOrder In Layerが同じなら手前にある方が前面に表示されます。 つまり、Sorting Layer > Order In Layer > Z値 です。 この描画順を上手く制御すれば、キャラクターのように幾つかのパーツを組み合わせてキャラクターを作りボーンアニメーションで制御する事が

    【Unity】スプライトの描画順制御を楽にするSortingGroup - テラシュールブログ
    tarchan
    tarchan 2017/01/06
    >Unity 5.6からスプライト描画系で便利なSorting Groupなるコンポーネントが追加されました。