UdonSharpでの変数の取り扱いがわからない
解決したいこと
下記で掲載されているunitypackage内のLocal InputのCanvasの値を操作したいですが、想定通りに動きません。
https://hatuxes.hatenablog.jp/entry/2021/05/24/171942
掲載されているカウントアップについてはできました。
その後、キューブを新設し、
_countData++;
を
_countData--;
に変更したScriptを作成し、アタッチしました。これにより
- _countData++をアタッチしているキューブをインタラクトしたときは、カウントアップ
- _countData--をアタッチしているキューブをインタラクトすると、カウントダウン
する動作を想定していました。
しかし、カウントアップ側のキューブしか動作せず、カウントダウン側をインタラクトしても値が減りませんでした。
想定するような動作にするためにはどのようにすればよいか教えてください。
該当するソースコード
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
using UnityEngine.UI;
public class count_up_local : UdonSharpBehaviour
{
public Text DisplayDataText; // データを表示するためのText
private int _countData; // データ本体
void Update()
{
// 常時データをTextに出力する
DisplayDataText.text = _countData.ToString();
}
// Cubeをインタラクトすることで、値を+1/-1する処理
public override void Interact()
{
_countData++; // 片方のキューブはこちら
//_countData--; // もう片方のキューブはこちら
}
}
自分で試したこと
- _countData++側のUpdateを消すと、カウントアップ側が動かなくなり、カウントダウン側が動くようになりました。
-
DisplayDataText.text = _countData.ToString();
をInterect内の2行目に書くと、カウントアップ/ダウンはするものの、値が共有できていないようでした。(Up側5回インタラクトで1→2→…→5となり、続いてDown側インタラクトすると-1になり、再びUp側インタラクトすると6になる)
Pythonを普段使っているので、C#やUdonSharpの基礎的なことを理解できていない気がします。
ご教示、よろしくお願いいたします。
0