[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart8 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
360: 2022/10/20(木)13:18 ID:DC+tJ+6U(1) AAS
日本て法律守らないと捕まるんですね、くらい無意味なこと言ってると思う
361: 2022/10/20(木)13:55 ID:STTfBKLT(2/3) AAS
>>359そうかもです
362
(1): 2022/10/20(木)20:01 ID:STTfBKLT(3/3) AAS
質問です。
2番目のコードでuiに数値をセットしたいです。
しかし1番目は値がセットされません。
原因は何かわかりますか?

おそらく、変数宣言あたりに問題がありそうと考えています。
しかしはっきり分かりません。

1:
void Update()
{
if(Input.GetKeyDown(KeyCode.A))
{
count +=1;
var ga =GameObject.Find("test").GetComponent<Text>().text = 10.ToString();
Debug.Log(ga);
}
}

2:
void Update()
{
if(Input.GetKeyDown(KeyCode.A))
{
count +=1;
var ga =GameObject.Find("test").GetComponent<Text>().text;
ga= 10.ToString();
}
}
363
(1): 2022/10/20(木)21:24 ID:Hi0nLSLV(1) AAS
>>362
コードだけ見ると一応動作はしそうだけど…
1番目じゃなくて2番目がセットされませんの間違い?

2番目はgaっていう変数にtextの値をコピーしたあと、
gaに10を入れてるから、textの値は変わりませんね
364: 2022/10/20(木)22:20 ID:23okRftC(1) AAS
一番目はtestのスクリプトのtextに入力してる
二番目はgaにtestのスクリプトをgaにコピー。で、そのコピーしたgaに入力してる
testのtextをコピーしたgaとコピー元のtestのtextは別物。コピーをいじっても元は変わらない
365: 2022/10/21(金)00:40 ID:GfRumvU7(1) AAS
そもそも1つめはコンパイルエラーだろう
ga=text=ToString();となってる
文法を守れとしか言えない
366: 2022/10/21(金)01:11 ID:ZPp8yeJ+(1) AAS
多重代入してるだけだから一応動くのよ
でも見づらいしやめたほうがいいね
367
(1): 2022/10/21(金)18:36 ID:aj7NQKCn(1) AAS
>>363
364
365
366
回答どうも
30kmウォーク行ってきたので返答おくれました

364さんの言ってることが原因だったようです
変数にuiの値を入れてもそれはコピーになっちゃうんですね、、、

書き直しましたが、こういうふうにuiの値とカウントの値が違った時のみ、uiにカウントの値をセットしたかったのですね。uiの値を変数に入れて使いまわそうとしてました。
float count = 0;
void Update()
{
if(Input.GetKeyDown(KeyCode.A))
{
count +=1;
setCountToUi(count);
Debug.Log(count);
}
}

void setCountToUi(float countForUi)
{
var text_value = GameObject.Find("test").GetComponent<Text>().text;
//もしtextvalueとcountに差があった場合、現在のcountをtextvalueにセットする
if(countForUi != float.Parse(text_value))
{
GameObject.Find("test").GetComponent<Text>().text = countForUi.ToString();
}
}
368
(1): 2022/10/21(金)23:30 ID:p7nePW1Z(1) AAS
>>367
セットの時に毎回Findするよりは
それぞれのオブジェクトごとで子にcanvas持つとかした方がいいよ
369
(2): 2022/10/22(土)06:05 ID:DJepy6/o(1/6) AAS
>>368
回答どうも
publicでフィールドを作ってそこで指定するという意味でしょうか?
370: 2022/10/22(土)12:58 ID:DJepy6/o(2/6) AAS
>>369
解決しました
フィールドにuiを指定しておくんですね

これが”子”という意味でしょうか
371
(1): 2022/10/22(土)13:33 ID:Zr+BOUcM(1/2) AAS
子っつったら普通はヒエラルキーだなって思わない?
372
(1): 野球マン 2022/10/22(土)13:54 ID:8smeBO4o(1/2) AAS
子で持つより
>>369の方が適切だろ
っていうかUIを子で持つって「そのキャラごとにHPを表示する」みたいな
用途しか思いつかない
373
(1): 2022/10/22(土)13:55 ID:DJepy6/o(3/6) AAS
>>371
そうしますが、子オブジェクトにアタッチしてもfindによる検索が必要なんじゃないでしょうか?なにか取得する手段があるのでしょうか
374: 2022/10/22(土)16:23 ID:M8ieQ9xB(1) AAS
>>373
find要らない
375
(1): 2022/10/22(土)16:25 ID:Zr+BOUcM(2/2) AAS
何番目の子かが決まってればそれで良い
376
(1): 2022/10/22(土)17:10 ID:DJepy6/o(4/6) AAS
>>372
あー、頭の上にゲージがある的な?
377: 2022/10/22(土)17:21 ID:DJepy6/o(5/6) AAS
>>375
ありがとうございます
何番目かは変動する可能性があるので、get child的な関数ではなく、フィールドを使うことにします
378: 2022/10/22(土)17:24 ID:wE/JvYaK(1) AAS
人間ってやりたくない事は幾らやっても覚えないんだな
379
(1): 野球マン 2022/10/22(土)17:43 ID:8smeBO4o(2/2) AAS
>>376
そう
380: 2022/10/22(土)18:00 ID:DJepy6/o(6/6) AAS
>>379
どうも
フィールドでやります
381
(2): 2022/10/23(日)03:55 ID:zY0Co/aK(1/2) AAS
いや、子で持つのは
参照関係をスッキリさせるためなんだけど

動的にdestroyするとかならアレだけど
参照するものが同じprefab内にまとまってないとややこしくないか?

あとScriptable Object改造してそっから変数受け渡す方法もある
382
(1): 2022/10/23(日)06:27 ID:IEoTV2Zo(1/6) AAS
>>381
子にした場合はget childで取得するのですか?
たしかに関係のあるオブジェくとは1つにまとめたほうがわかり易いですね
383
(1): 2022/10/23(日)06:39 ID:zY0Co/aK(2/2) AAS
>>382
シリアライズで参照してもいいし
一度getchildとかgetcomponentinchildrenで取得して変数として持ってもいいよ
384: 2022/10/23(日)07:41 ID:IEoTV2Zo(2/6) AAS
>>381
unityの親子化必ずしも追従を意味しないみたいですね
エンプティでまとめておく的な意味もあるようです
385: 2022/10/23(日)07:42 ID:IEoTV2Zo(3/6) AAS
>>383
どうも
今回はこだわらずシリアライズでやっときます
386: 2022/10/23(日)11:59 ID:IEoTV2Zo(4/6) AAS
コツコツやろう(´・ω・`)、、、
387: 2022/10/23(日)18:27 ID:IEoTV2Zo(5/6) AAS
微妙にunity慣れてきたわ
ありがとう
388
(1): 2022/10/23(日)20:00 ID:IEoTV2Zo(6/6) AAS
普通の変数に代入した定数を変更する方法はありますか?

const float maxJumpCountLimit = 3;//初期値
float max_jump_count = maxJumpCountLimit;

2行目のmax_jump_countはmaxJumpCountLimitのコピーであるため、以下のような変更は可能だと思っていました。
しかし、どうも定数であるという情報までコピーされているため、変更出来ないようです。3が2になるはずですが変わりません。

max_jump_count -=1;

ゲームで3段ジャンプを作成しています。ジャンプするごとにカウントが減ります。
この値が0かつ着地したときに初期値である3に戻したいため、定数で3を定義しているのです。
389: 2022/10/23(日)20:28 ID:sTNwB9d4(1) AAS
const float maxJumpCountLimit = 3;//初期値
float max_jump_count = maxJumpCountLimit;

この処理でmax_jump_countがconstになったりはしない。
どこか他のところが間違ってる。
1-
あと 613 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.026s