[過去ログ] 【3Dゲームエンジン】Unity質問スレッド30 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
527(3): 2017/08/11(金)07:36 ID:/wXKl2Ja(1/8) AAS
C#で書いてます。
Update内でフラグのOnOffを確認して都度一度だけ処理させたいのですが、どのように書けばいいでしょうか?
ひとつの変数を0にする、程度でもいいので例を教えてもらえるとうれしいです。
やってみたこと
SetTriggerでフラグを立ててif文で処理
結果
SetTriggerで立てたフラグの取得方法が判らなかった
よろしくお願いします
530(1): 2017/08/11(金)08:30 ID:/wXKl2Ja(2/8) AAS
>>528-529
こんな時間にありがとうございます。
お恥ずかしながらまったくのど素人で、SetTriggerでOnにしたフラグを、何をどう書けば確認できるのかさっぱり判らない段階です。
int xで例えるなら、
int x = 1 はできても、if(int x == 1) が書けないという感じです。
531: 2017/08/11(金)08:37 ID:/wXKl2Ja(3/8) AAS
混乱してきて何を書いてるのか自分でも判らなくなったので実際に書いているスクリプトで質問させてください。
アタッチしているスクリプトは二つ
ctrl.cs
common.cs
ctrl.cs
public class ctrl : MonoBehaviour
{
public int sys00 = 1;}
532(2): 2017/08/11(金)08:49 ID:/wXKl2Ja(4/8) AAS
ヒエッ書き込みミス・・・
//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)
こんな単純なことをと思いますが、どうぞよろしくお願いします。
541(2): 2017/08/11(金)10:43 ID:/wXKl2Ja(5/8) AAS
>>535-536 すみません、ctrl abc がもうすでにわからず・・・
>>537-538 >>532で、エラーは何も出ず、commonに書いたif文が実行されず、ctrlで宣言した際の1を返し続ける状態です。
そこで、外部リンク:qiita.com こちらを参考に、一番はじめの「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に代入されていない)
知りたいこと
ほかのスクリプトの変数を取得、操作する方法
544(1): 2017/08/11(金)11:32 ID:/wXKl2Ja(6/8) AAS
>>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が作られるだけで、宣言時に中身は指定できないのでしょうか?
・スクリプトをいじっていると時折プレビュー開始時に自動で一時停止されるのですが、これはどのような場合なのでしょうか?
548(2): 2017/08/11(金)12:27 ID:/wXKl2Ja(7/8) AAS
>>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を返すようになるのでしょうか?
553(1): 2017/08/11(金)14:43 ID:/wXKl2Ja(8/8) AAS
>>550
ありがとうございます。このレベルが判らないので確信は持てませんが、今のところ特に問題ないようなので、これで大丈夫だと納得しておきます。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.043s