05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【Unity】uGUIボタン押したときにテキストの色が変わらないので適当に拡張してみたよ。その① 

こんにちは。
大坂です。

もう6月ですよ!
今月が終わったら今年ももう半年終わりですね。。

さてはて、今週の話題ですよっと。
まぁタイトルの通りのことです。

テキストを含んだこんなボタンを作ったとして、押すとテキストだけが白く残って気になるって話ですね。
(押したときの色を濃くしなければそんなに気にならないかもしれませんが…)

※クリックしたら見れますよっと

ということでボタン押したら一緒にテキストの色も変わってほしいので拡張です。
こんな感じのコードになりました。
using UnityEngine;
using UnityEngine.UI;

public class ChildColorChangeButton : Button {

Text[] childTxt;

protected override void Awake() {
// 自オブジェクトの子供のテキストをすべて取得
childTxt = this.gameObject.GetComponentsInChildren();
}

protected override void DoStateTransition(SelectionState state, bool instant) {
base.DoStateTransition(state, instant);

switch(state) {
case SelectionState.Highlighted:
case SelectionState.Normal:
for(int i = 0; i < childTxt.Length; i++) {
// InspectorのボタンのNormal Colorに指定した色にする
childTxt[i].color = colors.normalColor;
}
break;
case SelectionState.Pressed:
for(int i = 0; i < childTxt.Length; i++) {
// InspectorのボタンのPressed Colorに指定した色にする
childTxt[i].color = colors.pressedColor;
}
break;
case SelectionState.Disabled:
break;
}
}
}

一応複数テキスト入れておいて大丈夫なように最初に子供を全部取得するような形にしています。
このコードをButtonの代わりにAddConponentしてあげれば使用できます。

これでちゃんとテキストの色も変わっていますね。

※クリックしたr…

テキストだけ指定の色にしたいとかあってもうちょっと手を加えたものがありますが、あまりのネタのなさに来週に持ち越しです。

では今週もこれにてノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】Unityのアセット「UniWebView2」にてHTMLからアプリに値の受け渡しできちゃった 

こんにちは。もう月曜日ですね・・・・・坂内っす。

以前UniWebView2の簡単な使い方をブログで書きました。

ここで1点、HTML側からアプリのコードを呼ぶことはできるのか?
という疑問。

可能です!


HTMLからアプリをいじることができるんです!
というか、値を渡すことができます。


<test1.html>
<html>
<head>
<title></title>
</head>

<body>
<a href="uniwebview://command?count=1&aaa=bbb"><input type="button" value="値渡し"></a>
</body>

</html>


こんなHTMLを用意し、アプリ側ではこんなコードを書きます。

<WebView.cs>
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class ViewHtml : MonoBehaviour {
#if UNITY_IOS || UNITY_ANDROID || UNITY_WP8

private UniWebView _webView;

void Start() {
ViewHtml();
}

private void ViewHtml() {
_webView = gameObject.AddComponent();
_webView.OnReceivedMessage += OnReceivedMessage;
_webView.url = "http://●●●/test1.html";
_webView.Load();
_webView.Show();
}

void OnReceivedMessage(UniWebView webView,UniWebViewMessage message) {
Debug.Log(message.args["count"]);
Debug.Log(message.args["aaa"]);
}
#endif
}


これを実機で実行すると以下のようになります。



※HTMLはこんな画面です。
値渡しのボタンを押すと、下にような値が取れます。

1

(Filename: ./artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
bbb

(Filename: ./artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

先ほどHTMLに書いた「count=1&aaa=bbb」ここの部分がちゃんと取れてます。

これを使用すると、HTML側からUniWebを閉じたり、渡された値によって色々とアプリ側をいじることができそうですね。

本日はこれだけ!あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】Application.logMessageReceived使ってみた。 

こんにちは。
大坂です。

早くも木曜日です。
色々やばいですが、頑張れるだけ頑張ります。(何

さて今週も小ネタですよ。
Application.logMessageReceivedが気になったので使ってみた。
「Debug.Log」で出力したものをキャッチできるやつっぽいですね。
環境がない人とかに実機で確認してもらうときとかにログ画面に出せるようにしたい!とかって時に使えるかもしれません。

使い方はリファレンスにもありますが、こんな感じです。
public class LogReceiver : MonoBehaviour {

public Text logTxt;

void Awake() {
Application.logMessageReceived += ReceiveLogMessage;
}

private void ReceiveLogMessage(string log, string stackTrace, LogType logType) {
logTxt.text += log + "\n";
}

}

簡単ですね。
で別クラスでログを出力。
public class LogTest : MonoBehaviour {

void Awake() {
Debug.Log("画面にログが出したいかもね。");
}

public void LogBtn() {
Debug.Log("そうかもね。");
}
}

テキストに入れただけなので何のことはないですが、こんな風にちゃんと画面にも出てますね。

画像をクリックしたらボタン押した動きが見れるっす。

どうしても画面にログが出したいときなんかに使ってみてくださいませ。

今日もこれで終わりですよ。
また!ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】コルーチンを外から止めたいことがあるよね…? 

こんにちは。
大坂です。

忙しいような忙しくないような生活をしていて、ネタになるようなこともなくすごいしていますが、
今週も木曜日がやってきたのでひねり出していきます。

さて、タイトル通りではありますが、実行したコルーチンを外から止めたい場合。

こんな感じでやりました。
Coroutine corutine;

public void BlogTest_Start() {
corutine = StartCoroutine(BlogTest_Coroutine());
}

private IEnumerator BlogTest_Coroutine() {
// コルーチンでの処理
}

public void BlogTest_Stop() {
if(corutine != null) {
StopCoroutine(corutine);
}
}

クラス変数にCoroutine を作って、コルーチンを開始するときに入れてあげて、
コルーチンを実行している間にStopCoroutine(corutine);を実行すると止まる感じですね。

まぁ特に大した話でもないですが、途中で止めたい場面があったのでついでにメモ代わりに記事にしただけです…。

ずっと短いですけど、今週もこれで終わりですよ。
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

Visual StudioでTODOってどこにでるんだと。 

こんにちは。
大坂です。

先週ブログすっかり忘れて…あ、GW中だったからということにしておきましょう…。

さて、あんまり時間が取れないので小ネタです。

UnityとVisual Studioで作業していてTODO残してその場所にすぐ行けないのかと思ってたらありました。
まぁ書く必要もないですが、コメントで「// TODO」としてあげます。
public class TodoTest : MonoBehaviour {

// TODO 確認したい
}

こんなね。いらないね。

で、Visual Studioの「表示」-「タスク一覧」を開きます。


こんな感じでタスク一覧にTODOがみれます。
2017-05-11_2

ダブルクリックをするとその行に飛べるのでちょっと便利ですね。

今日もこれだけ!
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0