[過去ログ]
【3Dゲームエンジン】Unity質問スレッド30 [無断転載禁止]©2ch.net (1002レス)
【3Dゲームエンジン】Unity質問スレッド30 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
527: 名前は開発中のものです。 [sage] 2017/08/11(金) 07:36:08.19 ID:/wXKl2Ja C#で書いてます。 Update内でフラグのOnOffを確認して都度一度だけ処理させたいのですが、どのように書けばいいでしょうか? ひとつの変数を0にする、程度でもいいので例を教えてもらえるとうれしいです。 やってみたこと SetTriggerでフラグを立ててif文で処理 結果 SetTriggerで立てたフラグの取得方法が判らなかった よろしくお願いします http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/527
530: 名前は開発中のものです。 [sage] 2017/08/11(金) 08:30:33.05 ID:/wXKl2Ja >>528-529 こんな時間にありがとうございます。 お恥ずかしながらまったくのど素人で、SetTriggerでOnにしたフラグを、何をどう書けば確認できるのかさっぱり判らない段階です。 int xで例えるなら、 int x = 1 はできても、if(int x == 1) が書けないという感じです。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/530
531: 名前は開発中のものです。 [sage] 2017/08/11(金) 08:37:43.71 ID:/wXKl2Ja 混乱してきて何を書いてるのか自分でも判らなくなったので実際に書いているスクリプトで質問させてください。 アタッチしているスクリプトは二つ ctrl.cs common.cs ctrl.cs public class ctrl : MonoBehaviour { public int sys00 = 1;} http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/531
532: 名前は開発中のものです。 [sage] 2017/08/11(金) 08:49:14.56 ID:/wXKl2Ja ヒエッ書き込みミス・・・ //ctrl.cs public class ctrl : MonoBehaviour{ public int sys00 = 1; } //common.cs public class common : MonoBehaviour{ int x = 100; } void Update (){ Debug.Log(x); if (this.GetComponent<ctrl>().sys00 == 1){ x = 99; } } このうち、commonのif文がうまく実行できません。 ・確認できていること commonのUpdateで実行しているDebug.Logは確かにint xを返している ctrlのint sys00の値を変更してもint xは99を返さない(実行されてない) ・できていないこと 同じゲームオブジェクト内の他のスクリプトの変数を参照できていない ・おかしいと思うところ if (this.GetComponent<ctrl>().sys00 == 1) こんな単純なことをと思いますが、どうぞよろしくお願いします。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/532
541: 名前は開発中のものです。 [sage] 2017/08/11(金) 10:43:44.60 ID:/wXKl2Ja >>535-536 すみません、ctrl abc がもうすでにわからず・・・ >>537-538 >>532で、エラーは何も出ず、commonに書いたif文が実行されず、ctrlで宣言した際の1を返し続ける状態です。 そこで、http://qiita.com/Teach/items/8d1cdb90a3b533707c9a こちらを参考に、一番はじめの「publicで取得」をなぞり ctrlのsys00をcommonのxsys00に代入し、Update関数のDebug.Logでxsys00を表示するだけの処理をしようと思いましたが、同じくエラーは出ず、xsys00を宣言した際に入れた値が表示されるだけでした。 //ctrl.cs public class ctrl : MonoBehaviour{ public int sys00 = 1; } //common.cs public class common : MonoBehaviour { public ctrl ctrl2; //ここでctrl.csを代入? int xsys00 = 10; //代入されてない場合は10のまま } void Start () { xsys00 = ctrl2.sys00; //ここでctrl.csのsys00をxsys00に代入 } void Update () { Debug.Log(xsys00); //sys00を代入したxsys00を表示 } 結果:10を返し続ける(xsysに代入されていない) 知りたいこと ほかのスクリプトの変数を取得、操作する方法 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/541
544: 名前は開発中のものです。 [sage] 2017/08/11(金) 11:32:10.57 ID:/wXKl2Ja >>535、>>538等で詳しく触れられたthisの扱い、ようやく理解でき、 >>542のURLの先を参考に入力してみたところ無事取得することができるようになりました。 ですが、そこで2点疑問ができました。 ・sys00=2としているはずなのに、しつこく0を返すのでctrlのUpdate関数にDebug.Log(sys00)を放り込んだところ、同じく0を返していました。 Logを表示する前に改めてsys00=2;と記述したところ無事に2を帰すようになったのですが、 MonoBehaviourで宣言した public int sys00 = 2; は、sys00が作られるだけで、宣言時に中身は指定できないのでしょうか? ・スクリプトをいじっていると時折プレビュー開始時に自動で一時停止されるのですが、これはどのような場合なのでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/544
548: 名前は開発中のものです。 [sage] 2017/08/11(金) 12:27:27.23 ID:/wXKl2Ja >>546 ありがとうございます。そういう設定をどこかでやっているのですね >>545,547 どこで確認したらよいでしょうか。 ctrlのStart関数にsys00 = 2;を追記、 commonのUpdate関数を void Update () { ctrl d1 = GetComponent<ctrl>(); Debug.Log(d1.sys00); } と記述したところ、無事一時停止もなくなり、ログは2を返すようになりましたが、誤りでしょうか? 正しく動作していればctrlのMonoBehaviorに記述したpublic int sys00 = 2;で2を返すようになるのでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/548
553: 名前は開発中のものです。 [sage] 2017/08/11(金) 14:43:20.38 ID:/wXKl2Ja >>550 ありがとうございます。このレベルが判らないので確信は持てませんが、今のところ特に問題ないようなので、これで大丈夫だと納得しておきます。 http://mevius.5ch.net/test/read.cgi/gamedev/1500412168/553
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.066s