0

ユニティでカスタム数字キーパッドを作るつもりです。短くてきれいなコードを使って簡単な方法でどうやって作ることができるのだろうと思っています。以下のコードは、私の考えを説明するためのものです。

var str=""; //This is the result string that i have to send to host

var key0 = document.getElementById('key0').value;
var key1 = document.getElementById('key1').value;
var key2 = document.getElementById('key2').value;
var key3 = document.getElementById('key3').value;
... so on

key0.onclick= function() { //button click events
    str += "0";
}

key1.onclick= function() {
    str += "1";
}

key2.onclick= function() {
    str += "2";
}

key3.onclick= function() {
    str += "2";
}
... so on

function getStr() {
    return str;
}

このコードがゴミであることはわかっていますが、私はこのように考えています。イベントプロセス。しかし、各ボタンをゲームオブジェクトとして作成すると、すべてのボタンにコライダーがありますか? コライダーはいつ接触したかを認識します。だから私もこのように考えました。

var array = [key0, key1, key2, key3, ...]; //The list consisted of the gameobjects

foreach (array as arr) {
    arr.collider.onTouched = function() { //Assign the events to each gameobject's collider
        str += arr.getNumber(); // custom function 'getNumber' to attach the number to string
    }
}

コードを描いているだけです。ああ、重要なことは、Enter キーを押したときに結果文字列を返すことです。だから私はどうすればget;set関数をC#コードで統一できるか考えています。これは onUpdate 関数で管理できますか?

このプロセスを処理するための最善のアイデアを教えてください。ありがとうございます。

4

1 に答える 1

1

私見の最善の方法は、キャンバス API をレイアウト マネージャーと共に使用して、ボタンのサイズを自動的に調整することです。そして、すべてのボタンが同じレシーバー メソッドにイベントを発生させ、キー値を渡します。ほんの数行のコードで問題を解決できるはずです。

VR 用に構築しましたが、アプローチは同じです。

http://talesfromtheift.com/vr-canvas-keyboard/

于 2015-10-22T02:20:50.093 に答える