[過去ログ] 【3Dゲームエンジン】Unity質問スレッド33 	 (1002レス)
上下前次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
 どう見てもキムチ 
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使わない方が初心者には良い とたまに聞きます。 
   似た名前のローカル変数を複数使っているので混乱する可能性もあるかなと 
 
 2 基本的に変動しない小さいマスターデータをdb代わりに使う事が多い と見ました 
   こういった使い方には適さないのかもと迷いました 
 
 3 普通のゲームと同じくいくつかのシーンをループして進めていくのでオブジェクトが被らないようにシングルトンにする手間や 
   処理は一切入れず変数入れとしてこの処理をするならScriotbleObjectでいいのかな?と思ったり 
 
 4 形式にもよるのでしょうが一時的な変数をイチイチ外部に書き出すのはどうなのかと 
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 
 
 やっぱり、リスト最上段のDynamic floatの直下にあるところをみると、 
 コレ(@)がUnity側で用意した機能なんでしょうね・・・ 
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」で宣言して初期値設定しています 
 
 そして、他のシーンの他のオブジェクトから、適宜呼び出して参照や代入して共有してますね 
123: 2017/12/26(火)21:40 ID:ef3cEapS(9/11) AAS
 >>121の言うように、 
 セーブありのRPGみたいな感じであれば、シーン変更前にセーブして、 
 シーン変更後にロードでも良い気がしますね 
 
 ゲーム終了後も保持したいなら、やはり外部保存だと思います 
 
 自分のは基本パスワード式のACTなので、 
 セーブシステムがないので、ゲーム内でのみ保持しています 
 
 パスワードの入力によって、フラグの初期値を変更して、 
 その後にゲーム開始となるようにしていますね 
 (まっすぐゲームスタートした場合は、全フラグを初期値で開始) 
124(1): 2017/12/26(火)23:19 ID:V8TVTato(1) AAS
 >>118 
 言うまでもないが可能不可能で言えばどれでも出来る 
 と言うか、シーンロードでDestroyされないヒエラルキーに依存しないものならなんでも保持は可能 
 
 適不適で言うなら 
 1.staticである必要性はない。staticにすることによる弊害の方が多いため不適 
 2.ScriptableObjectは実行時はReadOnlyなデータのバリエーションを扱うもの。使い方が間違っているため当然不適 
 3.揮発性の情報ならこれが最適※ 
 4.不揮発性の情報ならこれこれが最適※ 
 
 ※揮発性情報は意図せずプロセスが死亡した場合に消えても良いもの、不揮発性情報はプロセスが死亡しても残るべきものとする 
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) { 
   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 || Min == 255){ 
   S = 0; 
  } else { 
   S = 255 * (Max - Min) / (255 - Mathf.Abs(Max + Min - 255)); 
  } 
   L = (Max + Min)/2; 
  } 
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; 
  } 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 
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
 全部自作した奴が偉い君は 
 ガワだけ張り替えて大当たりするようなソシャゲが 
 天下取ってる現状に発狂してそう 
上下前次1-新書関写板覧索設栞歴
あと 866 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.012s