[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild4 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
333: 2020/04/30(木)12:44 ID:yZzY0I2t(2/2) AAS
簡略化してるのかと思ってたけど
もしかしてStart()とかの関数の外でGetComponentしてる?
334: 329 2020/04/30(木)13:01 ID:V6Pk2JwW(3/3) AAS
>>332 333
どうもありがとうございました。
スタート関数の中でGetComponentを書かなくてはいけなかったのが分かっていませんでした。

publicで親を参照していた時はなぜかエラーが出ていなくてボタンも動いていました。
335: ダーク王鍬大使 ◆SoVpkB15jY 2020/04/30(木)17:20 ID:sYkR1Hoa(1) AAS
僕もガチ初心者の頃にメソッドの外でGetComponentしようとしたことがありまひた(^^
誰もが通る道なのでふね(^^

ボッキング!(^^
336: 2020/04/30(木)17:46 ID:Svx3VR2I(1/2) AAS
昨日screenspace.cameraでのUGUIのドラッグについて質問した者ですが、やっと画面に表示される様になったもののクリックした位置のかなり左にオブジェクトがワープしてしまう様になりました。

もうお手上げです\(^o^)/
337: 2020/04/30(木)20:54 ID:dWqwrf+A(1/2) AAS
原因が同じかどうかはともかく

自分もドラッグで位置を変更できるようにしたオブジェクトがわけのわからない挙動になったことがあるわ
既存のSceneを大量にコピーして増やしたうちの一つだけがそうなったから頭を抱えた
結局原因はヒエラルキーに登録したスクリプトのGameObjectにmissingがあることだった
そんなことでも挙動がおかしくなるんだな
338: 2020/04/30(木)20:54 ID:uP6BsH0v(3/3) AAS
クリックした時の座標データを表示して、見る。
339
(1): 2020/04/30(木)21:02 ID:OfoKVMka(1) AAS
質問時にエラーが出てる時は必ず言って欲しいわ
340: 2020/04/30(木)21:28 ID:Svx3VR2I(2/2) AAS
ワープ現象は手札置き場パネルのホリゾンタルレイアウトがカードオブジェクトのアンカー?を左上にセットしていたのが原因っぽいです。
ドラッグ開始時に一度コンポーネントをオフにし、アンカーをスクリプトから中心に移動する事で解決しました。

screenspaceの問題についてはRectTransformUtilityを使って座標を変換する事で解決しました。

同じ現象で困る人が後から救われる様に書き残しておきます。
ありがとうございました!

>>339
エラーが出れば自分でも調べられるから楽なんですけどね・・・。
341: 2020/04/30(木)21:28 ID:dWqwrf+A(2/2) AAS
そういえば自分の時はコンソールに何かエラーメッセージが出てたな
342: 2020/04/30(木)21:34 ID:rTPsa1+b(3/3) AAS
ここで質問していろいろ弄ってわかったことのメモを置いておきます。

【uGUIのImage】と【SpriteRenderer】について
Unityで画像オブジェクトを表示する方法として、uGUIのImageとSpriteRendererの2つがあるようです。
どちらを使っても似たようなことをできるようですが、やり方が多少異なります。

?uGUIのImageを使う場合
uGUIのオブジェクトはヒエラルキーのCanvas以下に置く必要があり、座標系はピクセル(例:-375〜375)。
画像はUI→Imageをオブジェクトにアタッチして設定(あるいは最初からUI→Imageでオブジェクト作成)。
クリックしたときの動作はUI→Buttonをアタッチして設定。

?SpriteRendererを使う場合
画像を直接シーンに、あるいはヒエラルキーに置くとできるのがこのオブジェクト。
座標系は物理距離(例:-2.5〜2.5。他の人のレスによるとメートルを表しているとか)。
またこのオブジェクトをCanvas以下に移動させると座標系がピクセル(例:-375〜375)に変更。
クリックしたときの動作はオブジェクトにColliderをアタッチして、
Rayを飛ばしてColliderに当たったかどうかを判定(というコードを書く)。
(やったことはないですがRayの代わりにEventTriggerを使った方法もあるようです)

実行時には?と?は重なって表示されます。
まだよくわかっていませんが、?の座標系は動作時の環境(スマホの画面サイズ等)に依存するようで、
?と?はずれるかもしれず、その辺りのケアも必要になるかもしれません。
343: 2020/05/01(金)00:44 ID:YDQCTUGy(1/2) AAS
UGUIではUIを作りましょうって事なんだろうけど、レイヤーを指定して最前面以外に描画できるだけで初心者にはありがたいのになぁ。
344
(3): 2020/05/01(金)20:23 ID:HXkpQ0jK(1) AAS
おすすめのアセット教えてください(´・ω・`)
345: 2020/05/01(金)20:37 ID:KuaWU/nQ(1) AAS
何が欲しいねん2Dキャラ欲しいのにSE集いらないやろ
346
(1): 2020/05/01(金)22:22 ID:YDQCTUGy(2/2) AAS
>>344
セール終わったばっかりじゃん!
初参戦でdotweenとeasysaveとSE集3個買いました。
347: 2020/05/02(土)00:55 ID:d/s8ZDya(1) AAS
宴を買ったけど今すぐ使いたいのはダイヤローグシステムの方だった
次のセールでも半額になっていますように
348: 2020/05/02(土)01:17 ID:z//Ej8ZX(1) AAS
>>344
このブログでも見たら?
外部リンク:www.asset-sale.net

都市ジェネレーターくっそ楽しそう
349
(1): 2020/05/02(土)04:48 ID:qMjLJQ/3(1/2) AAS
>>346
DOTweenは無料のようですが
DOTween Proを買ったのでしょうか?
セールが終わったばかりとは残念なことです。
350: 2020/05/02(土)04:58 ID:qMjLJQ/3(2/2) AAS
>>344
最近買った本にオススメアセットが乗っていました。

Playmaker($65):プログラミング補助ツール
DOTween(無料):オブジェクトアニメーション
Easy Save The Complete Save & Load Tool for Unity ($24.99):セーブやロード実装
Anti Cheat Tool Kit($50):チート対策
UniRx - Reactive Extensions for Unity(無料):コルーチン等非同期処理ライブラリ
JSON .Net For Unity(無料):オブジェクト↔Jsonの変換ライブラリ
Lean Touch(無料):タッチパネル操作
宴3 Unity Text Adventure Game Engine Version3($80):ノベルゲームエンジン
Fungus(無料):ノベルゲームエンジン(ノベルがメインじゃないゲーム用)
Camera Filter Pack($15):カメラエフェクト
Unity Particle Pack(無料):公式エフェクトサンプル
6000+ Flat Buttons Icons Pack($5.99):アイコンやボタンのデザインアセット
351: 2020/05/02(土)23:46 ID:jg5HGTGy(1) AAS
ずっと解決できない不具合があり教えて頂きたいです。
画像リンク

ゲームを始めて
「赤い人」に付いているスタート関数が走って「赤い人になるボタン」が非表示になります。
「青い人になるボタン」を押すと赤い人が非表示になり、もともと非表示だった「青い人」が表示されるクリックイベントが付いています。
表示された「青い人」に付いているスタート関数が走って「青い人になるボタン」が非表示になります。
最後に「赤い人になるボタン」を押すと赤い人が表示されて「青い人」が非表示になるクリックイベントが付いているのですが、
「青い人」が非表示で消えて「赤い人」が表示されず、「赤い人になるボタン」も残ったままで何度押しても何も起こらなくなります。

RedButtonのボタンコンポーネントに付いているクリックイベントの関数
public void _RedButton()// 「赤い人になるボタン」を押したら
{
Transform Parent = GameObject.Find("ManParent").GetComponent<Transform>();//親オブジェを探す
GameObject.Find("BlueMan").gameObject.SetActive(false);// 青い人が消えて
GameObject.Find("RedMan").gameObject.SetActive(true);// 赤い人が表示
}
分かりにくいですが伝わるでしょうか。
ずっと原因が分からず途方に暮れています。ご指導よろしくお願いします。
352
(2): 2020/05/02(土)23:54 ID:liKQCy1q(1) AAS
GameObject.Findは非アクティブオブジェを検索できないから、

//親オブジェから子を探す
Parent.tran.form.Find("子オブジェ").gameObject.SetActive(true);

にすればいいんじゃないかな
353
(1): 2020/05/03(日)00:15 ID:mGAguN+2(1/2) AAS
>>352
ごめんなさい親がTransform関数だからtransformいらなかった(あっても通るけど)

Parent.Find("RedMan").gameObject.SetActive(true);
でいけると思います
354
(1): 2020/05/03(日)00:46 ID:3PYqNA60(1/2) AAS
>>352>>353
どうも有難うございます。
GameObject.FindからParent.Findに変更したことで挙動が一歩先に進みました。
画像リンク

「赤い人」が表示されるようになりましたが、
「赤い人」に付いているスタート関数通りに動いていません。
「赤い人になるボタン」が非表示になり「青い人になるボタン」が表示されるはず(ループする)なのですが、「赤い人になるボタン」が残ったままです。

赤い人に付いているスタート関数
using UnityEngine;
public class RedMan : MonoBehaviour
{
void Start()
{
Transform Parent = GameObject.Find("Canvas").GetComponent<Transform>();//キャンバスを参照
Parent.transform.Find("BlueButton").gameObject.SetActive(true);//「青い人になるボタン」表示
Parent.transform.Find("RedButton").gameObject.SetActive(false);//「赤い人になるボタン」非表示
}
}
「赤い人」が表示されて最初の状態に戻ったのでループするはずですが、「赤い人」が表示されているのに↑のスタート関数通りに動いていません。ゲームスタート時はRedManが表示、BlueManが非表示の状態から始まりました。
Parent.transform.Findにしているのでたぶん間違っていないと思うのですが。
どのような原因が考えられるでしょうか。
355
(1): 2020/05/03(日)01:05 ID:mGAguN+2(2/2) AAS
>>354
Start関数は1回目にインスタンス化したときにしか呼ばれないから、アクティブ化したとき毎回呼びたいなら
OnEnable関数に入れると解決すると思います
356: 2020/05/03(日)01:20 ID:3PYqNA60(2/2) AAS
>>355
どうもありがとうございます!
ずっと行き詰っていたので質問してよかったです!
357
(1): 2020/05/04(月)11:48 ID:J4ms5P/o(1/2) AAS
ヒエラルキー
Canvas
image

もし、Canvasの子のimageに付いているimage.csの中にあるbool型の変数 isBool が false だったら

処理

それ以外

処理


というif文のコードを続けて書くことは出来るでしょうか?
階層をたどって行ってスクリプトの中にある変数がfalseかtrueかを知りたいコードです。
こういう書き方が出来るのであれば教えてください、丸投げで申し訳ないのですがどうぞよろしくお願いします。
358
(1): 2020/05/04(月)11:59 ID:FDckzKji(1) AAS
子の取得
イメージの取得
スクリプトの取得からの変数を取得
の複合となります。
359
(1): 2020/05/04(月)16:56 ID:4sVluEfA(1) AAS
なんでもかんでも、public にするのは良くないと
よく言われますが、
その理由は、思いがけず他のスクリプトから変更されるリスクがあるから
という認識で大丈夫でしょうか?

そうであるとすれば、個人制作であれば
それほど気にしなくていいですか?
360: くまじょ 2020/05/04(月)17:27 ID:AIvgNpPa(1) AAS
>>359
いいよ
でも何でもかんでもpublic メンバ変数は良くないと知ったうえで
361: 357 2020/05/04(月)20:12 ID:J4ms5P/o(2/2) AAS
>>358
どうもありがとうございます。
別スクリプトの変数の値を取得することが出来ました。

もし、Canvasの子のimageに付いているimageScriptの中にあるbool型の変数 isBool が false だったら

GameObject _image; //スクリプトが付けているオブジェimageを変数に入れる
BigModeScript _imageScript; //imageのコンポーネントimageScriptを変数に入れる

_image = GameObject.Find("image");
_imageScript = _BigModeScript.GetComponent<imageScript>();
bool _isBool = _imageScript.isBool;
if (!_isBool)
{
      処理
}
    else
{
   処理
}

ifの()の中に全部入れるようにするのかと思っていましたがそうではなかったです。
362
(1): 2020/05/05(火)13:51 ID:9nXMWD0/(1/2) AAS
画像リンク

画像リンク


初歩的な質問ですみません。カメラの撮影範囲を表示している?の線に背景が触れると、?のように表示されます。
?のようにならず正常に表示するにはどうすればよいのでしょうか。
分かる方がいましたら回答お願いします。
1-
あと 640 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.022s