[過去ログ] 【3Dゲームエンジン】Unity質問スレッド33 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
83: 2017/12/25(月)23:20 ID:WQ3+0cde(2/2) AAS
>>82
できません。
84: 2017/12/25(月)23:21 ID:WYjEkbDZ(1/2) AAS
UIのボタン入力を受けてデバッグにログ出せるようになったけど、
UIのスライダーを動かして、その値をデバッグログに出力するのができない・・・
スライダーの値はどうやって受け取れば良いのですか?
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)」を選んではダメで、
一覧の一番上の方にある、「メソッド名」のみのを選ぶと、
省11
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;
省14
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;
省9
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になっていました
省5
103(2): 2017/12/26(火)12:51 ID:hFK9SmSE(2/4) AAS
もう1つ質問です
uGUIのButtonは、各々をマウスで押すのが普通だと思うんですが、
カーソルで複数から選択して、Enterで押す機能は、
デフォルトの機能で用意されていますか??
インスペクターのNavicationでVerticalを選んでから、
Visualizeすると、各ボタンを結ぶ動線の矢印が表示されるから、
キー操作でのフォーカス移動できそうに見えるんですが、
省1
104: 2017/12/26(火)16:38 ID:yq5adPSI(2/4) AAS
>>98
頭おかしいんとちゃうか?
ここで質問する方が遥かに効率悪いぞ?馬鹿なの?死ねよ
例えば>>102-103の内容なんて質問して5時間経過した今も返答はついていないが
ググれば5分〜10分でわかるわけだ
20分もあれば1つの方法以外にも沢山方法あることも知れて全部自分の物にできるわけだが?
スライダーやトグルの説明もクソ沢山あるしな
省3
105: 2017/12/26(火)16:42 ID:94NCEA31(1) AAS
>>98
効率を求めて宿題丸写し繰り返してりゃ、学力は全くつかないのと同じ
だから周りの人間が普通についてこれるレベルにすらついてこれない
>>99
ValueChangeは自動でリスナーの設定してるだけだった筈
確か、リスナー設定のタイミングが指定出来ないからScriptableObjectから
設定ロードしたりすると詰む
省2
106: 2017/12/26(火)16:44 ID:yq5adPSI(3/4) AAS
>>98
あと自作してるのに効率って何?
手本や人から教わらないと自作できないの?
それって自作というより盗作や真似じゃねーの?
コピーや真似してるだけなのに自作だと思い込んでるの?
自作は試行錯誤の連続
お前が今どんな物作ってるのか知らないが
省8
107(1): 2017/12/26(火)16:49 ID:/Bbw4vw9(6/8) AAS
>>102
スケールが違うから撮影範囲外に居るってのは違う
canvasはUIに特化するためにそういう仕組みになってる
3D空間上に居たら最前面に表示すべきUIとモデルの前後関係を注意しなければならなくなる
ゲームによってはカメラが移動しまくるからそれに合わせてUIの座標を追従させるとか馬鹿らしいだろ?
だからオーバーレイ表示する仕組みになってる
ただUIが3D空間上にいてほしいこともある
省3
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
どう見てもキムチ
115: 2017/12/26(火)19:19 ID:yq5adPSI(4/4) AAS
公式どころか個人がやってる初心者講座サイトの1つでもやってれば普通に分かっていておかしくない内容だよな。
どんだけ何もやってない怠けものだよコイツって感じ
116: 名無し@キムチ 2017/12/26(火)19:58 ID:5fo0vrRf(1/2) AAS
ごく初歩的な質問ですが、何もさわってないのに、たまにシーン内でのオブジェクトの位置が変わっていることがあるのですが、それは何故でしょうか?
同じく何もしないのに、コンポーネントが外れていたり、インスペクターの値が変わっていることもあります。
これは非常に困るので、位置や値が自分で変えるまでは絶対に変わらない対処法をご教示おねがいいたします!!!
117: 名無し@キムチ 2017/12/26(火)20:03 ID:5fo0vrRf(2/2) AAS
なお>>113は当方ではないですよ。当方、無意味なコテ外しはしませんw
118(3): 2017/12/26(火)20:26 ID:O9PscLer(1) AAS
シーン遷移時に引き継ぎたい変数をどの手段から選べばいいか迷ってるんですけど、
1 static変数として持つ
2 ScriptableObjectを作ってそこに一時保管しておく
3 dontdestroyで変数の入ったスクリプトがアタッチされているオブジェクトを壊さず持っていく
4 外部のdb等に一時保管しておく
辺りで迷ってるのですが、ケースバイケースだとは思うのですがどれがいいのかアドバイスお願いします。
1 なるべくstatic使わない方が初心者には良い とたまに聞きます。
省6
119: 2017/12/26(火)21:20 ID:ef3cEapS(6/11) AAS
当方、キムチでも、113でも、117でもありませんがw
120: 2017/12/26(火)21:27 ID:ef3cEapS(7/11) AAS
>>111
ボタンは引数なしで呼び出すだけだから簡単だけど、
スライダーは引数をどうやって受け取るかがわからなかったのでした
少なくとも公式のオンラインマニュアルからは探せず・・・
UIのインスペクターのリストをよーく見たら、
引数ありのメソッドと同名の、引く数なしのメソッドが上の方に見つかって解決したけど
>>99
省2
121(2): 2017/12/26(火)21:32 ID:ycBgqB9O(1) AAS
>>118
何が消えてOKで、何が消えたら不味いのか、切り分けが分からない
例えば、セーブ/ロード付けるなら、シーン移動時にセーブとロード
するから結局同じ事じゃないの?
122(1): 2017/12/26(火)21:36 ID:ef3cEapS(8/11) AAS
>>118
個人的には「3」を使ってます!
最初のLoad用のシーン0でフラグ管理用のオブジェクトを「DontDestroy」設定して、
その後はシーン1へ遷移して、以降はシーン0へは戻りません
(戻ると、「DontDestroy」設定を繰り返してしまうので・・・)
フラグ管理用のオブジェクトに載せたスクリプト内では、Start()内で、
ゲームを通してシーン間で共有する変数を全て「public」で宣言して初期値設定しています
省1
123: 2017/12/26(火)21:40 ID:ef3cEapS(9/11) AAS
>>121の言うように、
セーブありのRPGみたいな感じであれば、シーン変更前にセーブして、
シーン変更後にロードでも良い気がしますね
ゲーム終了後も保持したいなら、やはり外部保存だと思います
自分のは基本パスワード式のACTなので、
セーブシステムがないので、ゲーム内でのみ保持しています
パスワードの入力によって、フラグの初期値を変更して、
省2
124(1): 2017/12/26(火)23:19 ID:V8TVTato(1) AAS
>>118
言うまでもないが可能不可能で言えばどれでも出来る
と言うか、シーンロードでDestroyされないヒエラルキーに依存しないものならなんでも保持は可能
適不適で言うなら
1.staticである必要性はない。staticにすることによる弊害の方が多いため不適
2.ScriptableObjectは実行時はReadOnlyなデータのバリエーションを扱うもの。使い方が間違っているため当然不適
3.揮発性の情報ならこれが最適※
省2
125: 2017/12/26(火)23:39 ID:ef3cEapS(10/11) AAS
staticにする必要性ってどこにあるんだろう??
FCやSFCで言うところの、RAMじゃなくてROM的な機能か?
126: 2017/12/26(火)23:51 ID:ed3wWG+q(1) AAS
えっ
127: 2017/12/26(火)23:58 ID:ef3cEapS(11/11) AAS
ゲーム内で使いまわす、汎用関数を定義するとか?
128: 2017/12/27(水)00:01 ID:iZzjfAdD(1) AAS
@コンソメ
Aコンスト
Bコンビニ
129: 2017/12/27(水)00:48 ID:4kYoBCMG(1/10) AAS
>>121-122
>>124
回答ありがとうざいました。
3でやってみようと思います。
130: 2017/12/27(水)01:16 ID:2+M/n1Lm(1/4) AAS
ROM的な機能は、ScriptableObjectの方だったか
全オブジェクトからアクセスできる関数(メソッド)作成はStaticが良いかもしれない
どのスクリプトからでも
@RGB→HSL変換できるメソッド:RGBto.HSL(R, G, B, out H, out S, out L)
ARGB→HSV変換できるメソッド:RGBto.HSV(R, G, B, out H, out S, out V)
を作ってみた
131: 2017/12/27(水)01:19 ID:2+M/n1Lm(2/4) AAS
public static class RGBto {
public static void HSL(int R, int G, int B, out int H, out int S, out int L){
int Max = Mathf.Max (R, G, B);
int Min = Mathf.Min (R, G, B);
if (Max == Min) {
H = 360;
} else if (G == Max) {
省14
132: 2017/12/27(水)01:19 ID:2+M/n1Lm(3/4) AAS
public static void HSV(int R, int G, int B, out int H, out int S, out int V){
int Max = Mathf.Max (R, G, B);
int Min = Mathf.Min (R, G, B);
if (Max == Min) {
H = 360;
} else if (G == Max) {
H = 60 * (B - R) / (Max - Min) + 120;
省17
133: 2017/12/27(水)01:47 ID:+i3zpKSn(1/2) AAS
Stackoverflowみたいでいい感じじゃないの
134(3): 2017/12/27(水)03:01 ID:4kYoBCMG(2/10) AAS
また質問なんですけど、
シーン遷移した後って前シーンからdontdestroyで持ってきたオブジェのスクリプト内で
getcomponentってできないですか?
gameobject.findで指定したオブジェクトを見つけるまでは大丈夫なのですが
ゲットコンポーネントするとNullReferenceExceptionが帰ってきます
同じシーン内に作ったなんらかからならちゃんと動くのですが
135: 2017/12/27(水)03:07 ID:4kYoBCMG(3/10) AAS
もしかするとfindも失敗してるのかもしれませんが、
sceneをパスに指定するようなことが必要になるのでしょうか?
dontrestroyしたオブジェクトはdontdestroyの子みたいな表示になりますし
共通シーン内でしか受け渡しできないとかなのでしょうか?
136(1): 2017/12/27(水)12:43 ID:YC5nHwtt(1) AAS
全部自作した奴が偉い君は
ガワだけ張り替えて大当たりするようなソシャゲが
天下取ってる現状に発狂してそう
137: 2017/12/27(水)12:54 ID:WZqeNEin(1/6) AAS
>>103
UnityのUIのボタンのフォーカスとフォーカス対象の設定
外部リンク:gametukurikata.com
>あらかじめボタン1つがフォーカスされていないと他のボタンの選択が出来ません
>EventSystemに最初に選択するボタンの設定は出来ます
>>89 >>91
[UI] スライダーで変更した値を取得できない現象に対処した [Unity]
省9
138: 2017/12/27(水)12:57 ID:WZqeNEin(2/6) AAS
>>102
Unity : 3Dシーン内のCanvasが邪魔
外部リンク:indie-du.com
>UnityがCanvasの1ピクセルを1unitとして計算して表示
>1unitは1メートルなので、100ピクセルのUIは100メートルで描画
>Canvasの左下が原点(0, 0, 0)に合っている
139: 2017/12/27(水)14:56 ID:+i3zpKSn(2/2) AAS
見ての通り、質問せずに最初から自分でググってれば数分で解決している問題が多いな。
自分でググらないといけない事を人にググってもらってるだけなんだから。
140(1): 2017/12/27(水)17:26 ID:u5IVM9F6(1) AAS
カンバス、そんなに邪魔?
消しちゃえばいいやん。必要な時にtrueにしてさ。
141: 2017/12/27(水)18:22 ID:WZqeNEin(3/6) AAS
>>140
そうだよね
GUIの表示だけoffにすれば済む話だよね
142(1): 2017/12/27(水)18:41 ID:WZqeNEin(4/6) AAS
>>134
何をGetcomponentしたいの?
Sceneを指定したりはしないはず
ObjectはFindされているんでしょ?
obj内にObjectが入っている状態で、スクリプトをGetcomponentしたいなら、
スクリプト名 s = obj.GetComponent<スクリプト名>();
そのスクリプト内の変数をゲットしたいなら
省2
143(1): 2017/12/27(水)18:54 ID:fBJY1RTE(1/6) AAS
やってみたがFindもGetComponentも普通に出来るよな
検索範囲は明示がないけどHierarchyウインドに表示されてる物は
全捜索するようで、シーンが分かれていようが全く関係がない
(Updateで使うなってのは、毎回Hierarchy全捜索されたら洒落にならん)
144(2): 2017/12/27(水)18:56 ID:WZqeNEin(5/6) AAS
>>134
dontrestroyしたObjectに付いているスクリプト内で、
別のシーンにある他のObjectのコンポーネントを取得してみたけど、普通に受け取れたよ?
Scene0で、共有Objectをdontrestroyして、Scene1へ遷移
Scene1で、共有Objectのスクリプトから、
Scene1の別のObjectのtransfomを取得したら、普通に見れた
FindだとHierarchyにない別のSceneのObjectは検索できないはず
省3
145(1): 2017/12/27(水)19:04 ID:WZqeNEin(6/6) AAS
>>134
Debug.Logで、FindしたGameObjectの中身を表示、
GetComponentした中身を表示してみることを勧めるよ
dontrestroyしたObjectに付いているスクリプトでも、
それ以外のもともとそのSceneにあったObjectに付いているスクリプトでも
まさか、dontrestroyしたObjectを出すためのSecneを省いて
テストプレイしているなんてことはないよね?
省3
146: 2017/12/27(水)19:40 ID:fBJY1RTE(2/6) AAS
>>144
>FindだとHierarchyにない別のSceneのObjectは検索できないはず
なるほどこういうことか
画像リンク[png]:imgur.com
transform.FindとGameObject.Findは検索範囲が違う
俺はGameObject.Findだから取れてるみたい
147: 2017/12/27(水)19:49 ID:y/zeZUnT(1/5) AAS
何百枚もカンバスあるの?
そんなに多くないから登録しときゃ見つかるでしょ。
148: 2017/12/27(水)19:54 ID:9tGAk59e(1/3) AAS
みんなカンバス読みなの?
キャンバス派は少数?
149: 2017/12/27(水)19:56 ID:y/zeZUnT(2/5) AAS
どっちでもいいなぁw
150(1): 2017/12/27(水)19:58 ID:TaFXzcmh(1) AAS
英語だとカンバスが近いらしい。HowTo動画とか見てるとカンバスカンバス言われるからカンバス読みになるんじゃないの。
キャンバスは美術用語で、学校で習うのはキャンバス読みだと思う。
151: 名無し@キムチ 2017/12/27(水)20:09 ID:oeXBuupd(1/2) AAS
>>150
発音のことなのか・
英語でもキャンバスが近いよw
152: 2017/12/27(水)20:12 ID:9tGAk59e(2/3) AAS
別にどっちでも良いしどっちでも伝わるけど喋るときはどっちが多いのかなぁっていう素朴な疑問
ネイティブの発音はどうでも良い、カタカナ表記することが云々って話になるし
153: 2017/12/27(水)20:15 ID:Ojr+yz4V(1) AAS
>>136
できる/努力する奴ひっぱり下ろすのはゲスすぎないか
俺もわかんないまま借りてるけどどっか後ろめたいよ
154: 2017/12/27(水)20:26 ID:4kYoBCMG(4/10) AAS
>>142-145
レス遅くなりました。mm
dontrestroyしたオブジェクトにアタッチされたスクリプトから
遷移後のオブジェクトがfind出来てるか確認したところ、出来ていませんでした。
上で出来ていると勘違いしたのはfindの時点でエラーが帰ってこなかったからという単純な理由でした。
遷移後のシーン内に作ったオブジェクトのスクリプトから同じコードをコピペしてみましたが
こちらは普通にfind出来ていました
省2
155: 2017/12/27(水)20:36 ID:JxfZYfQR(1) AAS
香港人
「高卒だらけの日本人英語は、無いところにYの発音が入っちゃいます。土人丸出しです。」
156(1): 2017/12/27(水)20:40 ID:4kYoBCMG(5/10) AAS
AA省
157: 2017/12/27(水)20:43 ID:4kYoBCMG(6/10) AAS
AA省
158: 2017/12/27(水)20:44 ID:y/zeZUnT(3/5) AAS
遷移処理はどこに遷移?
ところどころ足りないので補足よろ。
159: 2017/12/27(水)20:46 ID:y/zeZUnT(4/5) AAS
今来たw
160(1): 2017/12/27(水)20:48 ID:4kYoBCMG(7/10) AAS
AA省
161(1): 2017/12/27(水)21:03 ID:y/zeZUnT(5/5) AAS
遷移したあとの間が少ないとか。トンチンカンかw
162: 2017/12/27(水)21:17 ID:fBJY1RTE(3/6) AAS
>>160
失敗しないし普通に出来る
163(1): 2017/12/27(水)21:22 ID:fBJY1RTE(4/6) AAS
てか、何で相互に見れるようにする必要があるの?
無駄が多すぎるだろ
DontDestroyOnLoadしたGameObjectを一方的に参照する
データ保管庫みたいに切り分けて使えばいいだけじゃない
上下前次1-新書関写板覧索設栞歴
あと 839 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.032s