[過去ログ]
【3Dゲームエンジン】Unity質問スレッド33 (1002レス)
【3Dゲームエンジン】Unity質問スレッド33 http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
116: 名無し@キムチ [] 2017/12/26(火) 19:58:50.02 ID:5fo0vrRf ごく初歩的な質問ですが、何もさわってないのに、たまにシーン内でのオブジェクトの位置が変わっていることがあるのですが、それは何故でしょうか? 同じく何もしないのに、コンポーネントが外れていたり、インスペクターの値が変わっていることもあります。 これは非常に困るので、位置や値が自分で変えるまでは絶対に変わらない対処法をご教示おねがいいたします!!! http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/116
117: 名無し@キムチ [] 2017/12/26(火) 20:03:01.61 ID:5fo0vrRf なお>>113は当方ではないですよ。当方、無意味なコテ外しはしませんw http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/117
118: 名前は開発中のものです。 [sage] 2017/12/26(火) 20:26:13.27 ID:O9PscLer シーン遷移時に引き継ぎたい変数をどの手段から選べばいいか迷ってるんですけど、 1 static変数として持つ 2 ScriptableObjectを作ってそこに一時保管しておく 3 dontdestroyで変数の入ったスクリプトがアタッチされているオブジェクトを壊さず持っていく 4 外部のdb等に一時保管しておく 辺りで迷ってるのですが、ケースバイケースだとは思うのですがどれがいいのかアドバイスお願いします。 1 なるべくstatic使わない方が初心者には良い とたまに聞きます。
似た名前のローカル変数を複数使っているので混乱する可能性もあるかなと 2 基本的に変動しない小さいマスターデータをdb代わりに使う事が多い と見ました こういった使い方には適さないのかもと迷いました 3 普通のゲームと同じくいくつかのシーンをループして進めていくのでオブジェクトが被らないようにシングルトンにする手間や 処理は一切入れず変数入れとしてこの処理をするならScriotbleObjectでいいのかな?と思ったり 4 形式にもよるのでしょうが一時的な変数をイチイチ外部に書き出すのはどうなのかと http://mevius.5c
h.net/test/read.cgi/gamedev/1513643755/118
119: 名前は開発中のものです。 [sage] 2017/12/26(火) 21:20:53.35 ID:ef3cEapS 当方、キムチでも、113でも、117でもありませんがw http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/119
120: 名前は開発中のものです。 [sage] 2017/12/26(火) 21:27:04.89 ID:ef3cEapS >>111 ボタンは引数なしで呼び出すだけだから簡単だけど、 スライダーは引数をどうやって受け取るかがわからなかったのでした 少なくとも公式のオンラインマニュアルからは探せず・・・ UIのインスペクターのリストをよーく見たら、 引数ありのメソッドと同名の、引く数なしのメソッドが上の方に見つかって解決したけど >>99 やっぱり、リスト最上段のDynamic floatの直下にあるところをみると、 コレ(?)がUnity側で用意した機能なんでしょうね・・
・ http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/120
121: 名前は開発中のものです。 [sage] 2017/12/26(火) 21:32:11.65 ID:ycBgqB9O >>118 何が消えてOKで、何が消えたら不味いのか、切り分けが分からない 例えば、セーブ/ロード付けるなら、シーン移動時にセーブとロード するから結局同じ事じゃないの? http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/121
122: 名前は開発中のものです。 [sage] 2017/12/26(火) 21:36:26.13 ID:ef3cEapS >>118 個人的には「3」を使ってます! 最初のLoad用のシーン0でフラグ管理用のオブジェクトを「DontDestroy」設定して、 その後はシーン1へ遷移して、以降はシーン0へは戻りません (戻ると、「DontDestroy」設定を繰り返してしまうので・・・) フラグ管理用のオブジェクトに載せたスクリプト内では、Start()内で、 ゲームを通してシーン間で共有する変数を全て「public」で宣言して初期値設定しています そして、他のシーンの他のオブジェクトから、適宜呼
び出して参照や代入して共有してますね http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/122
123: 名前は開発中のものです。 [sage] 2017/12/26(火) 21:40:47.37 ID:ef3cEapS >>121の言うように、 セーブありのRPGみたいな感じであれば、シーン変更前にセーブして、 シーン変更後にロードでも良い気がしますね ゲーム終了後も保持したいなら、やはり外部保存だと思います 自分のは基本パスワード式のACTなので、 セーブシステムがないので、ゲーム内でのみ保持しています パスワードの入力によって、フラグの初期値を変更して、 その後にゲーム開始となるようにしていますね (まっすぐゲームスタートした場合は、全フラグを初期値で
開始) http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/123
124: 名前は開発中のものです。 [sage] 2017/12/26(火) 23:19:01.53 ID:V8TVTato >>118 言うまでもないが可能不可能で言えばどれでも出来る と言うか、シーンロードでDestroyされないヒエラルキーに依存しないものならなんでも保持は可能 適不適で言うなら 1.staticである必要性はない。staticにすることによる弊害の方が多いため不適 2.ScriptableObjectは実行時はReadOnlyなデータのバリエーションを扱うもの。使い方が間違っているため当然不適 3.揮発性の情報ならこれが最適※ 4.不揮発性の情報ならこれこれが最適※ ※揮発性情報は意図
せずプロセスが死亡した場合に消えても良いもの、不揮発性情報はプロセスが死亡しても残るべきものとする http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/124
125: 名前は開発中のものです。 [sage] 2017/12/26(火) 23:39:55.98 ID:ef3cEapS staticにする必要性ってどこにあるんだろう?? FCやSFCで言うところの、RAMじゃなくてROM的な機能か? http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/125
126: 名前は開発中のものです。 [sage] 2017/12/26(火) 23:51:22.61 ID:ed3wWG+q えっ http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/126
127: 名前は開発中のものです。 [sage] 2017/12/26(火) 23:58:03.74 ID:ef3cEapS ゲーム内で使いまわす、汎用関数を定義するとか? http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/127
128: 名前は開発中のものです。 [sage] 2017/12/27(水) 00:01:05.49 ID:iZzjfAdD ?コンソメ ?コンスト ?コンビニ http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/128
129: 名前は開発中のものです。 [sage] 2017/12/27(水) 00:48:25.95 ID:4kYoBCMG >>121-122 >>124 回答ありがとうざいました。 3でやってみようと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/129
130: 名前は開発中のものです。 [sage] 2017/12/27(水) 01:16:54.26 ID:2+M/n1Lm ROM的な機能は、ScriptableObjectの方だったか 全オブジェクトからアクセスできる関数(メソッド)作成はStaticが良いかもしれない どのスクリプトからでも ?RGB→HSL変換できるメソッド:RGBto.HSL(R, G, B, out H, out S, out L) ?RGB→HSV変換できるメソッド:RGBto.HSV(R, G, B, out H, out S, out V) を作ってみた http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/130
131: 名前は開発中のものです。 [sage] 2017/12/27(水) 01:19:10.80 ID:2+M/n1Lm 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) { H = 60 * (B - R) / (Max - Min) + 120; } else if (B == Max) { H = 60 * (R - G) / (Max - Min) + 240; } else { H = 60 * (G - B) / (Max - Min); if (H < 0) H = H + 360; } if (Ma
x == 0 || Min == 255){ S = 0; } else { S = 255 * (Max - Min) / (255 - Mathf.Abs(Max + Min - 255)); } L = (Max + Min)/2; } http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/131
132: 名前は開発中のものです。 [sage] 2017/12/27(水) 01:19:30.81 ID:2+M/n1Lm 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; } else if (B == Max) { H = 60 * (R - G) / (Max - Min) + 240; } else { H = 60 * (G - B) / (Max - Min); if (H < 0) H = H + 360; } if (Max == 0){ S = 0; } else
{ S = 255 * (Max - Min) / Max; } V = Max; } } Hを求めるところはもっとまとめられるかも・・・ Hのみ0〜360(360で色相未定義) RGB,SLVは0〜255 http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/132
133: 名前は開発中のものです。 [sage] 2017/12/27(水) 01:47:53.25 ID:+i3zpKSn Stackoverflowみたいでいい感じじゃないの http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/133
134: 名前は開発中のものです。 [sage] 2017/12/27(水) 03:01:38.22 ID:4kYoBCMG また質問なんですけど、 シーン遷移した後って前シーンからdontdestroyで持ってきたオブジェのスクリプト内で getcomponentってできないですか? gameobject.findで指定したオブジェクトを見つけるまでは大丈夫なのですが ゲットコンポーネントするとNullReferenceExceptionが帰ってきます 同じシーン内に作ったなんらかからならちゃんと動くのですが http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/134
135: 名前は開発中のものです。 [sage] 2017/12/27(水) 03:07:33.07 ID:4kYoBCMG もしかするとfindも失敗してるのかもしれませんが、 sceneをパスに指定するようなことが必要になるのでしょうか? dontrestroyしたオブジェクトはdontdestroyの子みたいな表示になりますし 共通シーン内でしか受け渡しできないとかなのでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/135
136: 名前は開発中のものです。 [sage] 2017/12/27(水) 12:43:41.61 ID:YC5nHwtt 全部自作した奴が偉い君は ガワだけ張り替えて大当たりするようなソシャゲが 天下取ってる現状に発狂してそう http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/136
137: 名前は開発中のものです。 [sage] 2017/12/27(水) 12:54:38.15 ID:WZqeNEin >>103 UnityのUIのボタンのフォーカスとフォーカス対象の設定 https://gametukurikata.com/program/uifocus >あらかじめボタン1つがフォーカスされていないと他のボタンの選択が出来ません >EventSystemに最初に選択するボタンの設定は出来ます >>89 >>91 [UI] スライダーで変更した値を取得できない現象に対処した [Unity] http://negilab-unity.com/archives/14367667.html >スライダーの変更値を float として取得するのではなく
、Slider.value 変数として取得するように書き換えたところ、問題なく取得できました >スライダーのインスペクタで、引数にスライダーのオブジェクトを指定 uGUIのSliderの値をスクリプト側で受け取る方法 http://unitymemo.blog.jp/archives/30226350.html >SliderをGetComponentしてvalueを参照することでスライド値を参照できます >OnValueChangedに定義したメソッドでスライド値を受け取る方法 >メソッドを選択する際、一番上のほうの「redSlider」を選択する事 >下のほうにも「redSlider(float)」がありますが、こちらを選んでも
正しく値を渡すことは出来ません http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/137
138: 名前は開発中のものです。 [sage] 2017/12/27(水) 12:57:04.12 ID:WZqeNEin >>102 Unity : 3Dシーン内のCanvasが邪魔 http://indie-du.com/entry/2016/05/22/100102 >UnityがCanvasの1ピクセルを1unitとして計算して表示 >1unitは1メートルなので、100ピクセルのUIは100メートルで描画 >Canvasの左下が原点(0, 0, 0)に合っている http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/138
139: 名前は開発中のものです。 [sage] 2017/12/27(水) 14:56:11.54 ID:+i3zpKSn 見ての通り、質問せずに最初から自分でググってれば数分で解決している問題が多いな。 自分でググらないといけない事を人にググってもらってるだけなんだから。 http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/139
140: 名前は開発中のものです。 [sage] 2017/12/27(水) 17:26:33.07 ID:u5IVM9F6 カンバス、そんなに邪魔? 消しちゃえばいいやん。必要な時にtrueにしてさ。 http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/140
141: 名前は開発中のものです。 [sage] 2017/12/27(水) 18:22:37.68 ID:WZqeNEin >>140 そうだよね GUIの表示だけoffにすれば済む話だよね http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/141
142: 名前は開発中のものです。 [sage] 2017/12/27(水) 18:41:34.06 ID:WZqeNEin >>134 何をGetcomponentしたいの? Sceneを指定したりはしないはず ObjectはFindされているんでしょ? obj内にObjectが入っている状態で、スクリプトをGetcomponentしたいなら、 スクリプト名 s = obj.GetComponent<スクリプト名>(); そのスクリプト内の変数をゲットしたいなら s.変数名 変数は引用元のスクリプトの最初にpublicで宣言しておいて http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/142
143: 名前は開発中のものです。 [sage] 2017/12/27(水) 18:54:27.94 ID:fBJY1RTE やってみたがFindもGetComponentも普通に出来るよな 検索範囲は明示がないけどHierarchyウインドに表示されてる物は 全捜索するようで、シーンが分かれていようが全く関係がない (Updateで使うなってのは、毎回Hierarchy全捜索されたら洒落にならん) http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/143
144: 名前は開発中のものです。 [sage] 2017/12/27(水) 18:56:13.87 ID:WZqeNEin >>134 dontrestroyしたObjectに付いているスクリプト内で、 別のシーンにある他のObjectのコンポーネントを取得してみたけど、普通に受け取れたよ? Scene0で、共有Objectをdontrestroyして、Scene1へ遷移 Scene1で、共有Objectのスクリプトから、 Scene1の別のObjectのtransfomを取得したら、普通に見れた FindだとHierarchyにない別のSceneのObjectは検索できないはず Objectを検索できたのに、GetComponentできないなら、 そのObjectには取得しようとしてい
るコンポーネントがないか、 他のObjectから取得できないように保護されている(変数ならprivate宣言)かでは? http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/144
145: 名前は開発中のものです。 [sage] 2017/12/27(水) 19:04:57.79 ID:WZqeNEin >>134 Debug.Logで、FindしたGameObjectの中身を表示、 GetComponentした中身を表示してみることを勧めるよ dontrestroyしたObjectに付いているスクリプトでも、 それ以外のもともとそのSceneにあったObjectに付いているスクリプトでも まさか、dontrestroyしたObjectを出すためのSecneを省いて テストプレイしているなんてことはないよね? 自分の例で言えば、Scene0からじゃなくて、Scene1からテストしているとか テストプレイ中、Hierarchyにdontrestroy
したObjectは出ているんだよね? 毎フレームdontrestroyしまくったりしていないよね?? http://mevius.5ch.net/test/read.cgi/gamedev/1513643755/145
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 857 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s