[過去ログ] 【3Dゲームエンジン】Unity質問スレッド33 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
85: 2017/12/25(月)23:32 ID:WYjEkbDZ(2/2) AAS
ボタンの時と同じく、イベントを受け取りたいスクリプトを載せたオブジェクトを指定して、
そのオブジェクト内のメソッドを選択しているのですが、
メソッド内で関数名(float valuse)で受け取っても、valueの中身が0から動きません
スクリプト内で
using UnityEngine.Events;
using UnityEngine.UI;
は最初に宣言しています
86: 2017/12/25(月)23:48 ID:EdWH3PyF(1) AAS
コンポーネントGETしてメンバにアクセスするだけ
87(2): 2017/12/26(火)00:30 ID:ef3cEapS(1/11) AAS
>>88
ありがとうございます!
実は回答いただく前に色々試したところ、
2つの解決法を見つけました!
@UIの方で、ValueChangeを渡すメソッドを選ぶ時に
一覧の中にある「メソッド名(float)」を選んではダメで、
一覧の一番上の方にある、「メソッド名」のみのを選ぶと、
スクリプトでは引数にvalueがfloatで渡されるようです・・・
スクリプトの方は、「メソッド名(float a)」で定義しているので、
aにvalueが入ってきました!
Aスクリプトの方で「メソッド名(slider)」で定義して、
UIの方で、ValueChangeを渡すメソッドを選ぶ時に、
渡すオブジェクト(slider)も指定してやると、
スクリプトでは引数に指定したsliderが渡されるようです
スクリプトの方は、「メソッド名(slider s)」で定義しているので、
「s.value」で、valueがfloatで得られました!
コンポーネントをゲットする方法は、
Aに近い感じですか??
88(2): 2017/12/26(火)00:36 ID:/Bbw4vw9(1/8) AAS
>>87
どっちも近くないです
89(1): 2017/12/26(火)00:39 ID:ef3cEapS(2/11) AAS
オブジェクトobjAに載せたスクリプトscrA
public void OnSliderX(Slider sliderX){
float x = sliderX.value;
Debug.Log (x);
}
public void OnSliderY(float a){
float y = a;
Debug.Log (y);
}
UIスライダーSliderXにおける、OnValueChanged(Single)
スクリプト:scrA
オブジェクト.メソッド:objA.OnSliderX
渡す値:SliderX(Slider)
UIスライダーSliderYにおける、OnValueChanged(Single)
スクリプト:scrA
オブジェクト.メソッド:objA.OnSliderY ・・・リスト最上段のDynamic floatの直下
渡す値:欄なし
↑
ちなみに、リスト途中の
オブジェクト.メソッド:objA.OnSliderY(float) だと
渡す値:0 ←変数を指定できず、数値(固定値) になるようで、失敗します!
90: 2017/12/26(火)00:42 ID:aR7RHPYW(1/2) AAS
通じないと思ったらキムチか
91(2): 2017/12/26(火)00:53 ID:ef3cEapS(3/11) AAS
>>88
やってみました!
こんな感じでしょうか?
B引数は指定せずに、メソッドを呼び出して、
メソッド内で、GetComponent<Slider>().value から取得してみました!
public void OnSliderZ(){
float z = GameObject.Find("SliderZ").GetComponent<Slider>().value;
Debug.Log (z);
}
UIスライダーSliderZにおける、OnValueChanged(Single)
スクリプト:scrA
オブジェクト.メソッド:objA.OnSliderZ
渡す値:欄なし
@AB、どれも動作はするようです
一番簡単なのはAかも・・・
(当初やりたかった、floatで引数を送れるから)
92: 2017/12/26(火)00:54 ID:yq5adPSI(1/4) AAS
そのようだな
放置で
93: 2017/12/26(火)01:02 ID:/Bbw4vw9(2/8) AAS
>>91
getcomponentはあってるけど呼び出し元はどこでもいい
どこからでも呼び出せるため汎用性が高く使用頻度が高いので86が示してくれた
何で色んなやり方があるのかを考えずに動けばいいとしか考えてないから一向に技術が向上せず質問ばかりになる
動けばいいスタンスで前へ進むことも時には必要だがあまりにも基礎的な部分が疎かに見えるよ
94(1): 2017/12/26(火)01:05 ID:/Bbw4vw9(3/8) AAS
1時間で自己解決するような内容をわざわざ書き込むんじゃねぇ
つうか半年以上Unity触ってんだよね?
それでgetcomponentがよくわかってないってもうちょっと頑張れよって思う
下手すりゃ初日で取り入れるような内容だぞ
95: 2017/12/26(火)01:27 ID:aR7RHPYW(2/2) AAS
まぁ、喉元過ぎればどうでもいいやり方でも構わんが、
毎回コップの使い方忘れて憶える気すらなくて人に聞くってのはどうかと思う
96: 2017/12/26(火)02:57 ID:PvNvbClj(1) AAS
メモをする習慣を付けてみたらどうだとかいうアドバイスを送る。
97: 2017/12/26(火)08:27 ID:ef3cEapS(4/11) AAS
>>94
???
UIを触り始めたのは、3日前から
確かに、Unity始めたのは2017になるギリギリ前のUnity 5.6からだけど
98(6): 2017/12/26(火)08:31 ID:ef3cEapS(5/11) AAS
聞かないで試行錯誤しても効率が悪いから、質問スレに聞いてるんだけどね
実際、自己解決した方法は汎用性が低い方法で、正解まで辿り着けなったし
UI回りは、他のゲーム空間に配置するオブジェクトとだいぶ勝手が違うし
ネットで引いてもなかなか体系的に書かれているところ少なくない?
(ボタンは多いけど、スライダーとかトグルはあんまりない)
99(2): 2017/12/26(火)08:50 ID:e7BUlWI3(1) AAS
>>98
マジレスすると、UI的には>>87の@が正解な
FindやGetComponentは重いから出来るだけ呼び出す回数を少なくするべきだし、必要でないところで使うのは好ましくない
今回のケースで必要だとすればスクリプトから動的にイベントハンドラを設定する場合ぐらいだろう
汎用的でどこからでも呼べるから多用するってのはstaticおじさんと同じ思想だからやめとけ
100: 2017/12/26(火)10:01 ID:/Bbw4vw9(4/8) AAS
UI的に正解w
そんな意味不明なアドバイスでこの程度のパフォーマンスを気にするの?
forはi--で処理したほうが良いとか言ってそう…
101: 2017/12/26(火)10:03 ID:/Bbw4vw9(5/8) AAS
>>98
ここで聞くほうが圧倒的に効率悪いぞ?
getcomponentはUIに限らずUnity全体の基本
102(3): 2017/12/26(火)12:45 ID:hFK9SmSE(1/4) AAS
74です
>>75-76
どうもです
確認してみたら、右上にでっかいキャンバスありました
シーンビューの範囲からはみ出ていたようです
UIは解像度に合わせてピクセル単位で入力していたので、
100ピクセルの位置が、100Unitになっていました
要は、スケールが違うから、カメラの撮影範囲外にいたんですね
他の3Dオブジェクトは-10〜+10Unit単位で配置されていたので
UIと他のオブジェクトで、配置する座標基準が違うんだったら、
シーンビューはUIと他のオブジェクトで分かれていたほうが操作しやすい気がする
どちみちゲームビューじゃないと合成されて表示されないなら
103(2): 2017/12/26(火)12:51 ID:hFK9SmSE(2/4) AAS
もう1つ質問です
uGUIのButtonは、各々をマウスで押すのが普通だと思うんですが、
カーソルで複数から選択して、Enterで押す機能は、
デフォルトの機能で用意されていますか??
インスペクターのNavicationでVerticalを選んでから、
Visualizeすると、各ボタンを結ぶ動線の矢印が表示されるから、
キー操作でのフォーカス移動できそうに見えるんですが、
テストプレイしても、キー操作を受け付けません
104: 2017/12/26(火)16:38 ID:yq5adPSI(2/4) AAS
>>98
頭おかしいんとちゃうか?
ここで質問する方が遥かに効率悪いぞ?馬鹿なの?死ねよ
例えば>>102-103の内容なんて質問して5時間経過した今も返答はついていないが
ググれば5分〜10分でわかるわけだ
20分もあれば1つの方法以外にも沢山方法あることも知れて全部自分の物にできるわけだが?
スライダーやトグルの説明もクソ沢山あるしな
ねえ?馬鹿なの?
ググり方が下手過ぎてANDやOR検索できない子なの?
死ねよ
105: 2017/12/26(火)16:42 ID:94NCEA31(1) AAS
>>98
効率を求めて宿題丸写し繰り返してりゃ、学力は全くつかないのと同じ
だから周りの人間が普通についてこれるレベルにすらついてこれない
>>99
ValueChangeは自動でリスナーの設定してるだけだった筈
確か、リスナー設定のタイミングが指定出来ないからScriptableObjectから
設定ロードしたりすると詰む
だから、StartかAwakeでGetComponentして、自分でリスナーセットするか
メンバにアクセスする方が汎用性が高いし都合がいいんだよ
106: 2017/12/26(火)16:44 ID:yq5adPSI(3/4) AAS
>>98
あと自作してるのに効率って何?
手本や人から教わらないと自作できないの?
それって自作というより盗作や真似じゃねーの?
コピーや真似してるだけなのに自作だと思い込んでるの?
自作は試行錯誤の連続
お前が今どんな物作ってるのか知らないが
見た目が綺麗なユニティちゃんがグリグリ画面走ってる物作っていても
インベーダーゲームやマリオ1やブロック崩しやテトリスを最初に作った連中より劣ってるよ
彼らは作り方を誰にも教わらずに自分でやり方に気づき形にした人達だからな
プログラムが置いてあって弄っていたら、あれ?これこうしたらゲームみたいの作れるんじゃね?
と自分で試して誰にも聞かず参考本なんてものも見ないで作ってるからな
そしてそれが本当のゲーム作りだ
わかったか!盗作やろうの勘違いやろう!
おめえみたいのはアセット組み合わせてやってろや!
107(1): 2017/12/26(火)16:49 ID:/Bbw4vw9(6/8) AAS
>>102
スケールが違うから撮影範囲外に居るってのは違う
canvasはUIに特化するためにそういう仕組みになってる
3D空間上に居たら最前面に表示すべきUIとモデルの前後関係を注意しなければならなくなる
ゲームによってはカメラが移動しまくるからそれに合わせてUIの座標を追従させるとか馬鹿らしいだろ?
だからオーバーレイ表示する仕組みになってる
ただUIが3D空間上にいてほしいこともある
キャラクタのHPバーをそのキャラの頭上に表示させるとかね
そういうタイプのcanvasも設定できる
名称は忘れた、カメラオーバーレイと対になってるやつ
108: 2017/12/26(火)16:52 ID:sS7DQh8C(1) AAS
アセットを買えばいいのにね
109: 2017/12/26(火)16:54 ID:/Bbw4vw9(7/8) AAS
スライダーの件は1も2も3も別にどれも間違いでもない
実現したいことが実装できたならまぁそれでいい
ただ今後ちょっと仕様が異なるものが必要になったとき1つの手法しか知らなければまた質問する羽目になる
だから色んな手法を知ることは大事だしUI的に1が正解なんて結論には絶対にならない
スクリプトからスライダー生成する必要が出てきたらUI的に不正解な手法を取らなければならないとかエンジンとしてどうなんだって話
110: 2017/12/26(火)17:41 ID:Rpuwe1xT(1/2) AAS
>>98
馬鹿だなぁ
公式がチュートリアルやサンプルで説明済みだから、ネットで2番煎じのネタは
基本的な部分が重複しないんだよ無能
111(1): 2017/12/26(火)18:26 ID:/Bbw4vw9(8/8) AAS
そもそもボタンの記事があるならスライダーの記事なんて無くてもマニュアル見れば後は大体分かると思うけどね
パーツ全部個別に説明が必要な設計ってオブジェクト指向とはなんだったのかってなるし
canvasは公式に説明あるし結構深く解説してるところもいっぱいある
というかスライダーの記事だって山ほどあるでしょ
コレで少ないって言うなら何も作れる気がしないわ
112: 2017/12/26(火)18:36 ID:hFK9SmSE(3/4) AAS
>>107
なるほど!
UIは他のオブジェクトと違ってゲーム空間に置いているというよりも、
キャンバスごとカメラのレンズ前に貼り付けている感じですね
EventSystemで、EventSystem(Script)というコンポーネントのFirstSelectedを指定してあげたら、
カーソルで他のボタンへ移動したり、Enterで押せるようになりました!
最初の状態では、UIにフォーカスが降りてないからキー入力に反応しないみたい
113(1): 2017/12/26(火)18:39 ID:hFK9SmSE(4/4) AAS
NavigationのExplicitを選んでみたら、
カーソルを押した時に、次にどのUIへ行くかを、上下左右ごとに指定できると知って驚愕!
便利ですね〜
UI関連が話題になっていて勉強になります!
114: 2017/12/26(火)18:42 ID:Rpuwe1xT(2/2) AAS
どう見てもキムチ
上下前次1-新書関写板覧索設栞歴
あと 888 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.014s