facebook twitter hatena line email

Unity/tinyモード

提供: 初心者エンジニアの簡易メモ
2019年10月2日 (水) 10:58時点におけるAdmin (トーク | 投稿記録)による版 (tinyプレイ)

移動: 案内検索

tinyモードインストール

Unity 2018.3.0.b12以上らしい。

2019.1.6f1にはあった。

  1. unityメニュー/window/PackageManager
  2. 上のadvancedタブを選択し、"show preview packages"選択
  3. TinyModeがあるのでinstallする(2019.2.2のときはProject Tinyだった)
  • 2019.1.6f1(2019/7/23)時点だとversionは0.14.5でした。
  • 2019.2.2f1(2019/10/02)時点だとversionは0.16.1でした。

unityのメインメニューにtinyが現れることを確認

インストール後、なぜかエラー

Library/PackageCache/com.unity.tiny@0.14.5-preview/Editor/Export/TinyAssetExporter.cs(712,38): error CS1061: 'TMP_FontAsset' does not contain a definition for 'characterDictionary' and no accessible extension method 'characterDictionary' accepting a first argument of type 'TMP_FontAsset' could be found (are you missing a using directive or an assembly reference?)

参考:https://forum.unity.com/threads/i-have-a-problem-with-tiny-unity.665527/

の一番下にあるようにライブラリのTinyAssetExporter.csを書き換えるとうまくいった。

Line 713.
// 変更前
foreach (var kvp in font.characterDictionary)
{
var ci = kvp.Value;
var tinyCI = new Runtime.Text.TinyCharacterInfo(entity.Registry);
tinyCI.value = (uint)ci.id;

tinyCI.advance = ci.xAdvance;

tinyCI.bearingX = ci.xOffset;
tinyCI.bearingY = ci.yOffset;
tinyCI.width = ci.width;
tinyCI.height = ci.height;

var min = new Vector2(ci.x / font.atlas.width, (font.atlas.height - ci.y - ci.height) / font.atlas.height);
var off = new Vector2(ci.width / font.atlas.width, ci.height / font.atlas.height);
tinyCI.characterRegion = new Rect(min.x, min.y, off.x, off.y);
data.Add(tinyCI.Tiny);
}

// 変更後
foreach (var kvp in font.glyphLookupTable)
{
var ci = kvp.Value;
var tinyCI = new Runtime.Text.TinyCharacterInfo(entity.Registry);
tinyCI.value = (uint)ci.index;

tinyCI.advance = ci.metrics.horizontalAdvance;

tinyCI.bearingX = ci.metrics.horizontalBearingX;
tinyCI.bearingY = ci.metrics.horizontalBearingY;
tinyCI.width = ci.metrics.width;
tinyCI.height = ci.metrics.height;

var min = new Vector2(ci.glyphRect.x / font.atlas.width, (font.atlas.height - ci.glyphRect.y - ci.glyphRect.height) / font.atlas.height);
var off = new Vector2(ci.glyphRect.width / font.atlas.width, ci.glyphRect.height / font.atlas.height);
tinyCI.characterRegion = new Rect(min.x, min.y, off.x, off.y);
data.Add(tinyCI.Tiny);
}

tinyサンプルインポート

version0.14.5では

unityメニュー/tiny/import samples/

version0.16.1では

unityメニュー/window/~/Project Tiny/サンプルをimport

tinyプレイ

version0.14.5では

FlyingYolkであれば、

  1. FlyingYolk/FlyingYolk.utprojectを選択しするとプレイボタンが有効になる
  2. プレイボタンを押す

version0.16.1では

HelloWorldであれば

  1. Samples/Project Tiny/0.16.1-preview/HelloWorld/HelloWorld.project(Uのアイコン)をクリック
  2. プレイボタンを押す

tinyをbuild

File/Tiny/Build

Tiny/File/Build

でも同じ

TinyExport/FlyingYolk/html5/development/build/index.html にできている

公開するにはTinyExportを上げれば良い。その後index.html内の部分だけパスを修正すれば良い。

<script src="/~project/TinyExport/FlyingYolk/html5/development/artifacts/scripts/tsc-emit.js"></script>

<script src="../artifacts/scripts/tsc-emit.js"></script>

c#対応

今までTypeScriptでしたが、0.15.3でC#に対応したようです。

https://wakky.tech/tiny-unity-samples/

https://forum.unity.com/threads/project-tiny-c-preview-0-15-3-available.688969/