【Unity】7セグ、16セグポリゴンでテキスト描写してみた

概要

電子工作で利用される7セグ、16セグディスプレイに似せたポリゴンを作成しテキストを描写してみました。

7セグポリゴン

f:id:maadaa:20180424212302p:plain:w200
7個の辺のポリゴンを作成し、bool a,b,c,d,e,f,g に割り当てます。
入力されたnumberに応じて点灯させる辺を決定します。

switch (number)
{
	case 0: a = b = c = d = e = f = true; break;
	case 1: b = c = true; break;
	case 2: a = b = e = d = g = true; break;
	case 3: a = b = c = d = g = true; break;
	case 4: b = c = f = g = true; break;
	case 5: a = c = d = f = g = true; break;
	case 6: a = c = d = e = f = g = true; break;
	case 7: a = b = c = f = true; break;
	case 8: a = b = c = d = e = f = g = true; break;
	case 9: a = b = c = d = f = g = true; break;
}

16セグポリゴン

f:id:maadaa:20180424211550p:plain:w200
7セグテキストと同じように、16個の辺のポリゴンを作成し、
入力されたcharに応じて点灯させる辺を決定します。

フォントを描写した画像

f:id:maadaa:20180424194026p:plain:w400

辺ごとにランダム色を適応する

f:id:maadaa:20180424195712p:plain:w400

辺ごとに赤系のランダム色を適応する

f:id:maadaa:20180424201713p:plain:w400

頂点座標にランダム値を加算する

f:id:maadaa:20180424204048p:plain:w400

【Unity】アプリ内にWebサーバーを!ビルド後に素材を差し替える

ゲーム開発時に良い素材ができたら、できるだけ早く実機確認したいですよね。
しかし、素材組み込み、ビルド、実機確認を毎回行っていると時間がかかります。

実機ビルド後に、素材を変更できるようにするアプローチは幾つかありますが、
今回は4のUnityアプリ内にWebサーバー立てる方法を採用して、デモを作成してみました。

1. 素材をABにしてサーバーから配信する
2. 開発者の環境にローカルサーバーを立てる
3. 外部サーバーを利用する
4. Unityアプリ内にWebサーバーを立てる

4のアプローチだと外部サーバーを用意することなく、Unityアプリで完結できるのが利点です。

ソースコード

ざっくりと解説
WebServer.cs
TCPListenerを利用したWebServerです。
UpdatePerFrameで毎フレームリクエストがあるか確認して、
リクエストがあればレスポンスを返す処理を行います。
Content-Type は application/json のみしかサポートしていないので、
クライアントからPostするときにデータをJson化する必要があります。
(実装サボりました)

TextureReplaceTest.cs
ブラウザからPostされた画像データをTexture2Dに変換して表示する処理と、ブラウザに返すHTMLが定義してあります。

動作紹介
今回作成したデモアプリをiOSビルドしました。
Unityちゃんの背景画像をブラウザから変更してみます。

iOSのローカルiPアドレスを確認します。

ローカルIPアドレスが判明したので、PCのブラウザでhttp://192.168.179.4:8888/textureにアクセス。



(このページはiOSアプリ内のWebサーバーからのレスポンスで表示しています。)


Choose Fileを押して、確認したい素材を選択します。
今回選択した素材はこれ。


f:id:maadaa:20180411194325p:plain


送信が完了すると、Unityちゃんの背景画像が変わりました。

以上でデモは終わりです。
Unityアプリ内Webサーバーを立てることで、他にも便利な機能が作れる気がします。
最後まで読んでいただきありがとうございました。

記事内で使用されているキャラクター及び背景画像は
ユニティちゃんライセンス条項の元に提供されています。

ユニティちゃんライセンス