【3Dゲームエンジン】Unity総合スレッド31 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
3Dゲームエンジン「Unity」のスレです。
Windows/Mac用。JavaScript/C#といった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはAround、iPhone/iPod Touch/iPad、Mac、PC、Web、WiiU、3DS、Xbox360、PlayStation 3他
次スレは>>970を踏んだ方が建てること。
ダメなら>>980か>>990が建てて下さい。
●公式
http://unity3d.com/unity/
●Unity 2ch Wiki
http://www24.atwiki.jp/unity2ch/
■質問スレ
【3Dゲームエンジン】Unity質問スレッド30
http://mevius.2ch.net/test/read.cgi/gamedev/1492037553/
※前スレ
【3Dゲームエンジン】Unity総合スレッド30
http://mevius.2ch.net/test/read.cgi/gamedev/1500412168/ >>578
低レベルがすくなけりゃね。
おおくなりゃ、その事務対応から何から増えるわけで、人が増えりゃ万々歳なんて、まして無料で大挙してやってこられたらそれだけでお手上げ。
英訳放置っぽいのもそれの現れかもな。
まぁ、そうなるまえにunity運営が考えるだろうけど。 英語圏人口は、もっとずっと多いんだから、
ローカライズを向上したら運営がお手上げとか、
ローカルの運営の無能ぶりの証左にしかならんぞ
無能なのは薄々わかってたけどなwww ローカライズは、翻訳より、翻訳したあとのメンテが大変だからな
バージョンアップするたびに仕事が増える
大企業も細かいとこまではやりたがらないよ >>578
オンゲの無課金と一緒で、まともに作れない奴がいくら増えてもアセットの売り上げにはほとんど寄与しない
Unity自体もそうだが、アセットも作れる奴が手間を減らすために使うものだから シェアが増えるとユーザーのレベルに差が出るのは必然的だからな。
それが無くなるってのはUnity の衰退を意味する訳で、この法則も理解できてないってのは見ていて辛いね。
数が多いことの恩恵は少ない時よりも多いんだわ。
でも一部の人間は恩恵は無意識に甘受しながらその副産物である小さな弊害にばかり噛みつく。
そういう残念な人間には出来るだけなって欲しく無い。 レベルの低い奴をターゲットにしたカテゴリは他にあるんだよな
それこそ小学生をターゲットにしてるものもある
もちろんそれはゲームエンジンと呼べる代物ではないけど 寄生虫の分際でお前らも宿主チューチューしてんだろ?とか
ドヤ顔でいわれましても、普通皆自立してるからね >>583
ゲームもunityも課金の有無と技術の巧拙は全く関係ないしオンゲと同一視すること自体が的外れ過ぎる
アセットは初心者向けの物もあるしむしろ技術がある人ほど買う価値がなくなっていくだろう
万が一初心者全員が売り上げに全く寄与しなかったとして上級者にとっては一切マイナスにはならない
それにオンゲこそ無課金がいないと成り立たない
課金者のみプレイ可能で全員いいアイテム持ってるゲームとかクソゲーの極み まあまあ、皆さん落ち着いて
アセットを購入すればみんなハッピーになれますよ >1
いまボール転がしの英語チュートリアル動画見てるが、
無数にあるプログラム言語からぽんぽんと必要なものを置いていく時点で
絶対に初心者に教える気ねえよなこいつら
初心者ってのはプログラム言語すら知らないからこそ、
UNITYでどうにか出来ないかと訪れてるわけで、
そこへ「知ってて当たり前」あるいは「あとで全部マスターしろ」って前提で
チュートリアルをどんどん進めていくのはバカだと思う
ズブの素人でも欲しい機能がどこにあるかを見つけやすいように
ウィザード形式で作れるように導くのがこの手のツールの仕事だろうに。
これじゃプログラマー用の補助ソフトじゃねえか たとえばしれっとStart関数内にrb = GetComponent<RigidBody>();とか書いてるけども、
これが処理速度をあげるためのもの(だよな?よく知らんが)であることを説明しないとダメじゃん。
そもそも初心者用チュートリアルでまだこんなの使う必要ない。そういうところからしてダメ
「仕事のプロ」が必ずしも「教えるプロ」にはなれない典型 >>591
元々Unityは初心者用ゲーム制作ツールじゃないよ
>これじゃプログラマー用の補助ソフトじゃねえか
まさにその指摘通りの代物だよ最初から >>591
別にUnityはズブの素人でもゲームが簡単に作れますよって事は唄ってないと思うけど 話しをぶった切るが
色々細かい事気にせず作れるようになってて優秀な開発環境だなと思い
他の環境だと繊細に気を遣わないといけなような事も気にせず3ヶ月ガンガン進めて来ていたが
ついにイベントサイクルの関係で、実行してくれない物が出てきたわ
@→A→B、という流れになるようにコード書いてるのに
実際は@→B→A、みたいになり期待した結果にならない感じ
具体的には
「親Object(AScript)→子Object(BScript)→孫Object(CScript)」という構成のプレハブを
リソースからInstantiateしたと同時に、親Object(AScript)から孫Object(CScript)のpublic関数を呼び出し
その関数内で孫に対する色々な初期化やってるんだが
Visible類の初期化がうまくいかないわ
おそらくコード上のInstantiateを実行した段階では、実際にまだフィールドにはPrefabが生成されていなくて
先に親Object(AScript)から孫Object(CScript)のpublic関数の処理が、生成されていないPrefabのvisible系に対し
実行されてるから変化しないんだと憶測している。
やっぱりこの手のタイミング部分はUnity信用しきってやらず
今まで通り気を遣ってプログラミングするべきだったのね・・・( ^ω^)
大きくやり方変えないといけなくなったチクショウ!・・・orz ミドルウェアってのは慣用的な処理を担ってくれるってだけでプログラミングすら出来ないトーシローが触るもんじゃないだろ
そういう人は素直にツクールシリーズ使ってなよ >これじゃプログラマー用の補助ソフトじゃねえか
一発で本質見抜いてて笑うしかない UnityにしろUE4にしろ、使うのに少なくともDirectXとかOpenGLの経験は必要だろ
何甘えたこと言ってんだよ
素人が手を出して簡単にゲームつくれるようなもんじゃねーから まあぶっちゃけプログラミング出来なくてもゲーム作る方法があって、その中でも一番いい方法あるぞ
それはズバリ金を与えて他人にゲームを作らせることだ
こんな楽勝ゲーないだろ? アセットを買えばプログラムも知識もいりませんけどね 分からない点をググって調べる程度の学習意欲もなく5chに文句を書き込みに来る人間なんて優しくしてもクレーマーにしか育たないんだから >>602
信用できるPM(とか、その他必要な人材)を見つけないと
いけないから結構難易度高いと思うよ。 >>605
自分がPMになるのが一番早い
コミケ出すレベルで良いならそこまで要求能力も高くないし そんなことはないんだな
元メジャーリーグ投手、設立したゲーム会社38 Studiosの破産で一文無しに
https://m.japan.cnet.com/amp/story/35018610/ >>606
素人がPMとか無理ゲーでは。。。
>>607
特許庁、みずほ銀行、FF、etc 「金だけ」では当然ダメだよw
特に今は開発と同じくらい宣伝の方にも金まわさないとさ
このゲームもTVCM出しまくってれば運命は変わってたかもよ 56億ぽっちじゃなぁ・・・
400人雇うとか無計画過ぎるし大味な人だったんじゃね? うみょー直った
初心に帰り単純な方法思いついて試したら直った
今回また1つ学べたわ
Instantiate()で生成した物を、直後にGameObject.Find()で見つけ出そうする処理は気を付けた方がいい
staticではないpublicなりグローバルなりに参照格納してそっちから扱った方がトラブルなくてよさげ というような事がちらほらあるから
全くの初心者には無理でしょうというお話し
色々経験していないと原因追及と回避できるわけがない >>614
そういう方向性も考えてはいたが今後トラブッた時にさらに複雑になりそうなので採用せんかった
シンプルに直して先を急ぎたかった 完成プロジェクトアセットを購入すればプログラムは不要ですよ >>597
アップデートの呼び出し順は確か保証されてないんだよね?
生成もそういう話かの >>609
プロレベルのゲームを完成させて運営するならな
コミケ頒布レベルのゲームを作るなら難しくも無いよ 何というか、複製して起動したら勝手に設定とかxmlロードするように出来んの? どんなスポーツでもそれなりに楽しめるには理解して慣れる時間が必要だからなー
ゲーム制作もそれと同じだと思うが
あと誰でも簡単に出来てしまう事に、人は価値を見出ださないっていう事もあるわけだからな 誰でも出来ることならそれこそね、時給1000円出して高卒を連れてくれば良いんだから ことゲーム開発に関しては何故かずぶの素人も俺でも出来るかもって根拠のない期待感持っちゃうよね >>618
原因わかった今ならすっきりだが検証中は原因究明に本当に苦戦したよ
簡単にまとめると次のような処理
void func(){
@
for(〜){
Destoryでステージ上の全落ちてるアイテムを一旦削除
}
A
for(〜){
Instantiateで新しいアイテムをフィールドにばら撒く
}
B
for(〜){
新しくばら撒いたアイテムの中にあるスクリプトをGameObject.Findで呼び出しながら
アイテムを初期化していく
}
}
この処理がうまく機能していなかった。
原因は
・@のDestoryはvoid func(){}が終了しないと実際にゲームオブジェクトは削除されていない。
・AのInstantiateも@と同じくこの時点で完了していないようだった
・結果Bでの検索はAで生成されたものではなく@で削除予定だったものが参照されていた
これで新しいアイテムは全部正しく初期化されてなかった。
ゲームオブジェクト名でアイテムを識別して
GameObject.Findの検索に使ってるという不幸も重なってのバグ 上の処理は
@→A→B
の予定で動くはずなのに
実際には
B→@→A
みたいに動くわけよ
次からは気を付けるぞーっと ぶっちゃけゲームを制作するなんて実際にやってみるに越したことはない プログラムがダメでも普通に日本製のRPGツクールやウディタやアクエディも有るしわざわざUnityでやる必要もないしなー‥
沢山の人に見てもらうならともかく配信サイトとか大量だし環境は整っていると思うんだけどもね 後、制作することの何処かが楽しい、と思えるならゲーム制作にかぎらず創作は向いているだろうなぁ すべての過程が辛いと考えるならば辛いけど無理そうだとしか言えない >>627
それってgetcomponentの後の行に取得済み前提のコード書くとたまに「ありましぇん」エラーが出ちゃうのもそれか>順序不定
でIfでゲットできてるの確認してから取得前提のコードを実行するようにすればおkという
Unityはきまぐれなのかな script Execution Orderを使えばいい
順序を設定しなければ予定されてもいない予定通りにプログラムが動かないのは当たり前
気まぐれなのはunityじゃなく動くかわからないプログラムを作る人間 Script Execution Orderに依存する作りなんてクソだろ 順序不定っていうけどdestoryとinstantiateがどういう動作を行うものかを理解してないだけじゃ?
unity初級の内容だと思うけどリファレンスに明記されてなかったっけ? リアルタイムゲーだけど、そこまで苦労した覚えないなぁ。そこを考えずにヤラレタたら消す、押されたら連産とかしてるが。 ですとろーい
Actual object destruction is always delayed until after the current Update loop,
but will always be done before rendering.
実際のオブジェクト破壊はいつも遅れる、現在のUpdateループの後まで
しかしいつもレンダリングの前には終わる >>633
あれ使わずに作るにはどうすりゃいいの?俺ももううんざりしてるよ
何か気をつけたりしてることある? >>636
もうアレはオワコン
時代はRedshiftに移りますた >>631
気まぐれというよりは見落としがちな仕様の1つって感じかな?
他の不親切な開発環境だと、マニュアルの車運転んしてるみたいに最初からその辺り注意して作るが
Unityは変に親切設計でオートマ車みたいな感じなのもあり
意識しないで作れるようになってるから俺には落とし穴だった。
その割には詳しく説明してるサイトは少ない気がした。
>>634
漠然とは明記されてたようだよw漠然とね >>637
説明みてても初心者向きではないわなw
>>637
サンクス!
この説明分に俺なりの補足いれると
こうなる
↓
実際のオブジェクト破壊は瞬時には行われません。
Destoryを記述した同一フレームのUpdateの最期に実行されます。
この動きはinstantiateも同じです。
よってFindでオブジェクトを検索する時は注意してください。
Findは同一フレームのUpdateの最初に実行されます。
Start()でinstantiateした場合Findを使用しても検索できない事になります。 >>640
そもそもGameObject.Find()に依存した作りはお勧めしない
Destroyに関しては一応DestroyImmediateという即時削除メソッドが定義されているが、エディタ拡張を作る目的以外の使用は推奨されない
素直にDestroyを呼んで待つべき
Instantiateに関しては、Instantiateを実行した時点でインスタンスは存在する。ただしこれがヒエラルキーツリーに組み込まれるまでに遅延がある
よって生成されたオブジェクトを即時初期化したい場合にはInstantiateの戻り値に対して操作を行うと良い
また更に、AwakeやStartの処理が終わっていないオブジェクトのメソッドの呼び出しは推奨されない
Awakeでの参照関係の解決やStartによる初期化が終わっていないと正しく動作しない可能性があるから
プレハブ内で完結する操作ならInstantiateの戻り値に対して行えばいいが、それ以外は1フレーム待つのがいいと思う >>640
オブジェクトの生成破棄は時間かかる処理だからupdateの中でやられちゃ困る
だからフラグだけ立てて処理を次に回すような処理を取ってる
どこまでを初級者とするかってところはあるけども日本語で解説してる記事なんか山ほどある
scriptでオブジェクトの生成破棄を操作するならよく引っかかる内容
コレが初級者向けじゃないってなると、初級者は自分でscriptをほとんど使わずに組み上げるレベルになるね アセットを購入すれば初級者も簡単!
UNITYサイコーですね! ドラクエXみたいなMMOを簡単につくれるアセットありますか? >>641
まさにおっしゃりとおり
ちなみに
>そもそもGameObject.Find()に依存した作りはお勧めしない
これも当然承知の上で物は使い様でケースバイケースで使ってる
例えば俺の場合ステージ移管の時の初期化はFindが多い。
Updateみたいに毎フレーム呼び出すような頻繁にやるものではないため処理速度を要求していないのと
変数に格納してメモリー圧迫したくないという点からFindの方が向いてるわけよ。
その場限りの使い捨てみたいな感じの場所でFindは重宝してる。
俺の場合ね。 >>642
そうそうまさに初心者の定義は人によるから何とも言い難いところだわな。
フラグ立てて非同期っぽく遅延処理かけるやり方は結構制御に気をつかうので
中級者レベルかな〜と勝手に思ってる。
なんとなくネットワークプログラムのタイムアウト処理とか
外部ファイルの非同期読み込み処理に似てるものがあるしね。
初心者には結構難しい所だとおもうわけよ。
俺が最初そうだったからさwあくまで俺基準だけどなw >>646
まぁ人それぞれだけどプログラムとして見れば非同期処理となると中級なのかもしれん
が、俺はunityを使う上では初級だと思うよ
scriptでオブジェクト生成破棄を扱うなら前提知識になるわけだし
対応策は色々あってその対応方法によっては中級とかに値するかも知れんが
それはその方法が中級なのであって知識は初級だと思う、ってことね Unityはまだこれからなんだけど、他のプログラムの作りから考えるとオブジェクトのデータはModelにあって、GameObjectは単にそのビューとして生成、表示、消滅が行われるべきって感じがするけど間違ってる? UnityはModelもViewもControllerもGameObjectだよ >>649
だから分離したほうがいいんじゃって話なんだが。 Modelの挙動自体がフレーム単位にしかしようがないんだからGameObjectから分離してそこまでメリットがあるかなあ >>646
へえ、Unityのアクター階層への動的登録には、そういう問題があるんだな。シェア、サンクス
もっとも自前エンジンでアクターやタスク要素の登録管理基盤までスクラッチする場合でも、当然ついて回る問題だが。
安定動作のために(FixedUpdateを?)1フレーム待つべし、という書き込みがあるが、本当に1フレームで良いのかな >>655
企業でmvcやってるとこ知ってる
ソースじっくり読んだわけじゃないから上手く行ってるかは知らんが
web上がり、ってかブラウザソシャゲでphp使ってた会社だから設計思想をそのままunityに応用したっぽい
こういうとこ多そうな気がする >>654
1フレームで良いよ
安定動作のためじゃなくて、そういう仕様 上の方の神クラスみたいなのとかUniRXでやったほうが楽そう >>632
それもそうだw
もっと勉強しないと・・・
Unityちゃん、気まぐれとか言ってごめんなさい Unity制作初心者です。検索して調べても知りたい内容にどうしても辿り着けないので質問させていただきます。
いま、PCゲームでどうぶつタワーバトルと落ちてくる動物以外は全く同じものを作ろうとしているのですが初歩的なところで詰まっています。
プロジェクトは2Dで作成しました。
画像を取り込んでRigibody 2DやPolygon collider2Dを使って下に落ちるようにしたんですがそれからわからなくて詰まっています。
どうぶつタワーバトルのように回転させるボタンがあって画面をクリックすると動物が落ちる(それまでは動物は画面上に固定されている)という仕様にして,動物が落下したら次の動物が出てくる。というような仕様にしたいのですがプログラムが書けなくて実現できません。
上記の解決策が思いつかないのでどうかご教授お願い致しますm(__)m Unityはゲーム制作経験者用のツールだと何度言えば… >>664
すいません、、、、。質問スレにカキコしたつもりだったのですが間違えてしまっていました。。。
>>665
そうなのですか?友人にプログラム書けなくても作れるよと勧められて制作を始めてるのですが経験者じゃないと厳しいのですかね その友人は超適当だな。
プログラム書けなくても作れる物も多少あるよ。
ゲームと呼べないただ動くだけの何かになるだけだけど。
例えば灰色の箱を矢印キーだけで動かすだけの物とか。
市販されてるようなゲームを作るには100%プログラム書けないと無理。 >>666
初心者なら、もっと簡単なものからつくるべきだったかも。
まだプログラムしたいなら、一度本屋でそれなりの一冊を買ってやってみればいいよ。 Unity関連の本いろいろ立ち読みしたけどロクなの無かったよ
オンラインドキュメントと公式チュートリアルの方が10000倍マシ 出足を挫くなら、HPなり教えてやれ。
初心者の足引っ張んな。 PlayMaker何も無いところからある程度のレベルのゲーム作るチュートリアルなりサンプルって転がってん? アセット作成とかはいらないけど、それらをどうPlaymaker で組み上げてゲームに仕立て上げるかまでの。 質問スレじゃないのに答えるやつのせいで、質問がどんどん増えるよ ■ このスレッドは過去ログ倉庫に格納されています