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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
184: 名前は開発中のものです。 [sage] 2020/01/13(月) 01:57:24.71 ID:zsW/JqQ4(1) AAS
>>183
183(3): 名前は開発中のものです。 [] 2020/01/13(月) 01:11:20.52 ID:4r+dI/kz(1) AAS
外部リンク:tsubakit1.hateblo.jp
のページのこのif文のコードなんですが、
いまいち意味がよくわかないので解説お願いします。

特に「isLoaded = !isLoaded」などは、検索してもほとんど出てきませんが、
一般的な構文なのでしょうか?

private bool isLoaded = false;
public void OnClick()
{
isLoaded = !isLoaded;
if (isLoaded) {
Application.LoadLevelAdditive ("Scene2");
} else {
Application.UnloadLevel ("Scene2");
Resources.UnloadUnusedAssets();
}
}
!は論理否定演算子
それを代入してるだけ
185: 名前は開発中のものです。 [sage] 2020/01/13(月) 02:01:15.22 ID:auL79zSW(1) AAS
>>183
!は論理否定演算子
この記号が先頭に付いたら「〜ではない」のbool値が返る

bool flag = !trueなら「trueではない」としてfalseが入り
bool flag = !falseなら「falseではない」としてtrueが入る
要はフラグを反転させたいときに使う

そのコードではクリックの度にisLoadedのtrue/falseを差し替えて、実行するif文を切り替えてる
186: 名前は開発中のものです。 [] 2020/01/13(月) 15:06:19.70 ID:Rcgjsxsv(1) AAS
>>183
そのページの例は古いので止めた方がいいかと思う
シーンマネージャー使いましょう
187: 名前は開発中のものです。 [] 2020/01/19(日) 11:44:50.26 ID:STO1Jjfh(1) AAS
ずっとエディタのバージョンアップしてなかったのですが、最近、2019.2.17にあげて
戸惑ってます。やり方の分かる人がいたら教えてください。
RigをもったモデルをPrefabにして配置していたとして、いくつかのRigのRotationを
変更したとします。以前のエディタだと複数のリグを選択して、Transformタブの
Revertを選択すると、選択したリグのみPrefabの状態に戻せていたのですが、これが
できなくなりました。Revertが表示されないのです。
一つずつ選択するとRevert可能ですが、対象が多いと手間です。
Editor拡張も試してみましたが、PrefabUtility.RevertPrefabInstanceを使うと
選択したリグだけでなく全体がRevertされてしまいます。
どなたか良い対応をご存じないでしょうか?
188
(2): 名前は開発中のものです。 [sage] 2020/01/19(日) 18:38:14.35 ID:HuSwNtSK(1/5) AAS
別のスクリプトのコルーチンを作動させたいのですが、うまくいきません……
Googleで調べたりしたのですが、いまいちはっきりしなかったので質問させていただきます。

playerのゲームオブジェクトから攻撃をして、Monsterのゲームオブジェクトにダメージの処理をさせたいとして、Playerのスクリプトに

Monster.GetComponent<MonsterAI>().StartCoroutine(Damege());

としたのですが、うまく動きませんでした。
MonsterAIのDamege()はpublicで宣言してあります。

別ゲームオブジェクトのコルーチンを動かすためになにかひつような宣言などございますでしょうか。
189
(1): 名前は開発中のものです。 [] 2020/01/19(日) 18:50:40.70 ID:7w1DRTId(1/3) AAS
センドメッセージすればどう?
190
(1): 名前は開発中のものです。 [sage] 2020/01/19(日) 20:33:53.07 ID:TBz8d+il(1) AAS
モンスターは複数?ならきちんとターゲット処理してる?
191: 名前は開発中のものです。 [sage] 2020/01/19(日) 21:16:25.06 ID:pFV/J70z(1) AAS
>>188
うまく動かないって具体的にどう動かないか書いてくれないとわからんよ

コルーチンの使い方が間違ってないなら、考えられる可能性はコルーチンを実行してるゲームオブジェクトが非アクティブになってたりするくらいかな
192
(1): 名前は開発中のものです。 [sage] 2020/01/19(日) 22:52:24.68 ID:HuSwNtSK(2/5) AAS
CS0103: The name `Damege' does not exist in the current context
と出てしまうようです。

public IEnumerator `Damege' ()

193: 名前は開発中のものです。 [sage] 2020/01/19(日) 22:55:01.28 ID:HuSwNtSK(3/5) AAS
すみません、書いている途中で送信してしまいました。

public IEnumerator `Damege' ()

//実装処理
}

とMonsterAI側では定義してあります。
コルーチンを他スクリプトから呼び出す、ということが初めてなので、もしかしたら処理で足りていない部分などがありましたらご指摘いただけますと幸いです
194: 名前は開発中のものです。 [] 2020/01/19(日) 22:58:19.68 ID:7w1DRTId(2/3) AAS
まず、それがその、スクリプトから動くか?
次に単純なスクリプトで他から動くか
次に子ルーチンが動くか

やって
195: 名前は開発中のものです。 [sage] 2020/01/19(日) 22:59:40.91 ID:HuSwNtSK(4/5) AAS
>>189
センドメッセージで実装できないか調べてみようと思います、ありがとうございます。

>>190
ターゲットは1体なのできちんと取れているかと思います。
ゲーム中にエラーが出るのではなく、コンソールにエラーが出てしまい、ゲームプレイ出来ない状況となります。
196: 名前は開発中のものです。 [] 2020/01/19(日) 23:08:22.08 ID:7w1DRTId(3/3) AAS
>>192
関数名なんで囲ってるん?
いらんで
197: 名前は開発中のものです。 [sage] 2020/01/19(日) 23:11:26.13 ID:HuSwNtSK(5/5) AAS
public IEnumerator Damege ()

//実装処理
}

大変失礼しました……コピペしたときに間違って入ってしまったようです……orz
198
(1): 名前は開発中のものです。 [sage] 2020/01/20(月) 00:51:23.59 ID:RQ4i19+3(1) AAS
>>188

MonsterAI monster = Monster.GetComponent<MonsterAI>();

StartCoroutine(monster.Damege());
199
(1): 名前は開発中のものです。 [] 2020/01/20(月) 20:47:06.12 ID:WIRv1zPd(1) AAS
1つのオブジェクトのみにアタッチさせたいスクリプトがあった場合
2つ以上のオブジェクトにスクリプトがアタッチされそうになるとエラーを吐くようにしたいのですが
そういったことは可能ですか?
200: 名前は開発中のものです。 [] 2020/01/20(月) 20:55:37.69 ID:w54rhdgo(1) AAS
多分
【Unity】同じコンポーネントが複数アタッチされるのを防ぐ方法

外部リンク:ekulabo.com

でいけるんじゃね
201: 名前は開発中のものです。 [sage] 2020/01/20(月) 21:46:40.37 ID:D58JlX8z(1/2) AAS
>>198
これだ……!
これですね、ありがとうございます!
StartCoroutineの使い方が間違っていました。
ありがとうございます!
202: 名前は開発中のものです。 [sage] 2020/01/20(月) 21:52:04.20 ID:D58JlX8z(2/2) AAS
>>199
staticでbool宣言して、Start()でtrueなら自己削除、falseならtrueにする、というのはどうでしょう
203: 名前は開発中のものです。 [sage] 2020/01/28(火) 16:18:08.34 ID:6mvnNJrK(1/2) AAS
UnityEvent を設定できるコンポーネント、
プレハブの親階層のオブジェクトとか引っぱってくるのどうやるんだろ?

UnityEngine.UI.Button とかだと出来るんだけど自前で
[SerializeField] UnityEvent OnHogeFuga; ってのを持つコンポーネントを含む奴を
プレハブ化して、インスペクタ上に親階層の奴をドラッグしても×マークが出て
設定させてくれない。

UnityEngine.UI.Button のC#ソースでもどこかで公開されていないものかしら。
204
(1): 名前は開発中のものです。 [] 2020/01/28(火) 16:25:58.42 ID:FwIKyioN(1/3) AAS
自分の親ならtransfrom.parent でよくね?
205: 名前は開発中のものです。 [sage] 2020/01/28(火) 20:44:06.66 ID:6mvnNJrK(2/2) AAS
>>204
UnityEvent のプロパティドロワーに transform.parent の選択なんてあったっけ?
あと常に親とは限らない。
部品の一部が持つAnimationControler のSMBとか、
複雑な uGUI の一部の部品がプレハブのルートを参照するとか、そういうの。
206: 名前は開発中のものです。 [] 2020/01/28(火) 21:22:37.69 ID:FwIKyioN(2/3) AAS
親階層とりたい
必ずしも親じゃない

後から色々条件出すならなんも出来ん
207: 名前は開発中のものです。 [sage] 2020/01/28(火) 22:06:13.35 ID:1nXwNdFK(1) AAS
そんな、でたらめな条件なら、findしかないわな。逆にこれ1発で解決。あとは目的のオブジェクトが判るようにid持っとけばok
ゴーゴー!
208: 名前は開発中のものです。 [] 2020/01/28(火) 22:39:29.20 ID:Xfm9T4kB(1) AAS
UniRx色々こんな時こう使う的なパターン一覧ほしい
1-
あと 794 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s