トップページgamedev
1001コメント373KB

【3Dゲームエンジン】Unity質問スレッド13 [転載禁止]©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/11/01(土) 14:21:34.61ID:PIUwqvpm
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。
Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>970を踏んだ方が建てること。ダメなら>>980>>990が建てて下さい。

■前スレ
【3Dゲームエンジン】Unity質問スレッド12
http://peace.2ch.net/test/read.cgi/gamedev/1411226395/

■本スレ
【3Dゲームエンジン】Unity総合スレッド23
http://peace.2ch.net/test/read.cgi/gamedev/1404212872/

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
 http://unity3d.com/japan/
・ユーザーガイド&リファレンス
 http://japan.unity3d.com/developer/document/
・チュートリアル
 http://japan.unity3d.com/developer/document/tutorial/
・スクリプトリファレンス
 http://docs-jp.unity3d.com/Documentation/ScriptReference/
・FAQ
 http://answers.unity3d.com/index.html
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
注意事項:アセットおじさんは優しく愛でましょう
0083名前は開発中のものです。2014/11/04(火) 16:19:25.40ID:1NQoX3lD
Unityはモデリングソフトではないからそういうオペレーションはない。
ただスクリプトで動的に行うことは可能。
自分でエディタ拡張で実装すればエディタ上でも可能。
また動かないオブジェクトで同じマテリアルならStaticをチェックしておけば
自動で結合してドローコールは減らしてくれる。
0084名前は開発中のものです。2014/11/04(火) 16:51:27.46ID:XtQX/B4C
>>82
複数のCubeとかを、1つのObjectとして結合するには、アセットをかうのがいいでしょう。できると思いますよ
0085名前は開発中のものです。2014/11/04(火) 17:10:17.01ID:ZalTWdnC
>>83
回答ありがとうございます!まさに処理の重さが気になっていたので・・。
Staticチェックでやってみます。
0086名前は開発中のものです。2014/11/04(火) 17:23:20.28ID:pKOnaeze
>>85
staticでバッチングされるのはプロ版の機能だから
freeの場合、自力なりアセットなりでメッシュ纏めないとドローコール減らせないから注意な
0087名前は開発中のものです。2014/11/04(火) 18:34:49.00ID:UX/W+J+Q
unityにむかしついてたエディタどこ行った
もしかしてもう入ってない?
0088名前は開発中のものです。2014/11/04(火) 18:56:31.16ID:c1VdDso3
>>87
unity4.xから消えた
必要ならunity3.xダウンロードして入れてから他の場所に移すしか
0089名前は開発中のものです。2014/11/04(火) 19:51:01.60ID:XtQX/B4C
>>87
アセットをかえばついてくるかもしれませんよ?
0090名前は開発中のものです。2014/11/04(火) 20:30:22.53ID:UX/W+J+Q
unityアップデートしたらmonodevelopでbooファイルが開けないC#はいけるのに何でだ・・・
0091名前は開発中のものです。2014/11/04(火) 20:38:01.60ID:1NQoX3lD
5からBooは切り捨てられたのだ
0092名前は開発中のものです。2014/11/04(火) 21:09:20.43ID:33Ydw1+c
スプライトアニメーションについての質問です。
SpriteRendererのcolorプロパティを用いてカラー設定をしたいのですが
Animatorに該当オブジェクトへのカラー設定のアニメが含まれていると
該当アニメを再生してなくてもスクリプト側からの設定が反映できないようで悩んでます。

カラー関係無いアニメを再生してる時くらいスクリプトから制御出来るのではと思ってたのですが
ちょっとしたカラー設定でもアニメーションクリップを作成してAnimatorでの管理を考えるべきなのでしょうか?
0093名前は開発中のものです。2014/11/04(火) 22:33:10.49ID:UX/W+J+Q
jsも開けない 5からのことも考えてC#だけにするか
0094名前は開発中のものです。2014/11/04(火) 22:51:41.01ID:z+J54s7P
アセット爺さん>>81を華麗にスルーw
0095名前は開発中のものです。2014/11/04(火) 23:21:57.13ID:UO5ltJmw
「アセットおじさん」だろいいかげんにしろ
0096名前は開発中のものです。2014/11/04(火) 23:28:39.21ID:edbC8IP7
いつから「アセットおじさん」が男だと勘違いしていた…?
0097名前は開発中のものです。2014/11/05(水) 00:42:58.89ID:QiKCmYZg
アセットおじさんがツンデレの金髪ツインテ美少女なら萌える
0098名前は開発中のものです。2014/11/05(水) 01:54:20.57ID:Xo+vLE1P
すみません、Physics2.OverlaAreaAll並びにRayCast系の命令は、各オブジェクトにアタッチ出来ないんでしょうか。

複数あるオブジェクトA,Bがあって、Aをタッチ(クリック)するとAで指定した範囲内で最もそのAに近いオブジェクトBを消す
というモノを作っているんですが、上手く動作しません。

B   B
 B^         B
A1     A2

B     B

A1,A2共に範囲は周り1文字とし、A1をタッチ(クリック)すると上図のB^が消えます。
このAの範囲に入っているか判別する処理にOverlaAreaAllやRayCastを使用してみたのですが
0099名前は開発中のものです。2014/11/05(水) 02:02:42.76ID:Xo+vLE1P
途中送信してしまいましたすいません。

このAの範囲に入っているか判別する処理にOverlaAreaAllやRayCastを使用してみたのですが
----
格納されるはずのCollider2Dの配列にnullしか入っていません。nullを返されたのか、宣言したまま使われずにnullなのかはわかりませんが
Physics2Dがグローバル変数も持ってることから、個々のオブジェクトにアタッチ出来ないのではないかと見ています。

Physics2Dを使わずに範囲内のコライダーを特定する方法、またはいまアタッチしているコードでおかしいところがありましたらご指摘お願いします...
public Collider2D[] hits;
public Vector2 pointA;
public Vector2 pointB;
public int index;
public int lessIndex;
void Start(){
pointA = new Vector2 (gameObject.transform.position.x+5.25f,7f);
pointB = new Vector2 (gameObject.transform.position.x-5.25f,-7f);
Physics2D.raycastsHitTriggers = true;
}
void Update(){
Physics2D.OverlapAreaNonAlloc(pointA,pointB,hits);
index = hits.Length;
if (index <= 0) return;
else if(index > 0){
lessIndex = 0;
for(int i = 1; i< index; i++){
if(hits[lessIndex].collider.GetComponent<Script>().myposition() > hits[i].collider.GetComponent<Script>().myposition()){
lessIndex = i;
}
}
hits[lessIndex].collider.GetComponent<Note>().Dest();
}
}
0100名前は開発中のものです。2014/11/05(水) 02:06:11.19ID:Xo+vLE1P
すいません、コードに記述ミスが・・・
hits[lessIndex].collider.GetComponent<Note>().Dest();

hits[lessIndex].collider.GetComponent<Script>().Dest();

BにアタッチされたScriptで自分自身を消すメソッドに飛びます
0101名前は開発中のものです。2014/11/05(水) 02:38:04.93ID:FpIyV9JB
>>100
プログラムが組めないなら、アセットをかいましょう。プログラムなしでもゲームが出来ますよ
0102名前は開発中のものです。2014/11/05(水) 04:42:56.56ID:4xIm1SN9
Cameraに追加したSKyboxをスクリプトで
offにしたいのですが、どのように書けばいいでしょうか?
色々試してみましたが、うまくいきません。

function Updatet () {

Skybox.SetActive(false);

}

宜しくお願いします。
0103名前は開発中のものです。2014/11/05(水) 05:12:38.80ID:RQsBm2BP
Updatet → Update
0104名前は開発中のものです。2014/11/05(水) 08:47:30.28ID:LjolvEE6
>>97
真相は赤ら顔のデブオタ
0105名前は開発中のものです。2014/11/05(水) 09:45:17.06ID:FpIyV9JB
>>102
アセットをかえば動くと思いますよ
0106名前は開発中のものです。2014/11/05(水) 09:48:57.59ID:R43J7O3Q
>>102
その一行っていやホントに色々試したんかいw
JSはよく知らんが

function Update(){
if(Time.time>3f){
var a:Skybox = gameObject.GetComponent("Skybox");
a.enebled=false;
}
}

とかやれば多分開始から3秒でオフになる、と思う。
試してない、すまんw
もちろんこのままだと毎フレームゲットコンポーネントして
毎フレームオフにし続ける訳だが。
0107名前は開発中のものです。2014/11/05(水) 10:05:48.07ID:YVnuShCp
>>92
colorに限らずアニメーションに含まれてるとキーを打ってなくても逐一初期状態に変更されるんだよな確か
昔はまったわ

で、今ちょっと調べてみたらLateUpdateはアニメーション計算の後に実行されるみたいだから
毎フレームLateUpdateで上書きすればいけそう
http://docs-jp.unity3d.com/Documentation/Manual/EventFunctions.html

scriptとアニメーションの両方から制御しようとすると後々追いづらくなってバグの温床になりそうだからどちらかに纏められるなら纏めたほうがよい気はするが
0108名前は開発中のものです。2014/11/05(水) 10:20:52.57ID:PPS40SQB
>>99
↓を読んでOverlapAreaAllとOverlapAreaNonAllocの違いを確認してください
http://docs-jp.unity3d.com/Documentation/ScriptReference/Physics2D.OverlapAreaAll.html
http://docs-jp.unity3d.com/Documentation/ScriptReference/Physics2D.OverlapAreaNonAlloc.html

OverlapAreaAllは検出したCollider2Dの配列を生成してメソッドの戻り値として返してくれますが
OverlapAreaNonAllocは結果を格納するCollider2D配列は使用する側が用意しないといけません
0109名前は開発中のものです。2014/11/05(水) 12:41:09.68ID:Xo+vLE1P
>>108
ありがとうございます。
無事動かすことが出来ました。

原因はスクリプトをアタッチするオブジェクトにRigidBodyを付加していなかったことだったようです。
そしてRigidBodyをつけていてもOverlapAreaNonAllocでは配列の中身は返してくれませんでした
OverlapAreaAll+RigidBodyでなんとかColliderの配列を取得することに成功しました。

OverlapAreaAllとOverlapAreaNonAllocって似たような処理だと思ったんですが別物みたいですね
0110名前は開発中のものです。2014/11/05(水) 13:59:28.25ID:CfcgvaT2
セール中のParticle Playground 2ってフリー版で使える?
実際に設定してるとこ映した動画見当たらないんだけど、これ本当に簡単にエフェクト作れるの?
0111名前は開発中のものです。2014/11/05(水) 15:27:37.51ID:R43J7O3Q
プロ版が必要、と条件になければ使えるだろう。
見た感じ簡単に出来る、というタイプではなく
凝ったものが作れる、という感じっぽいけどなぁ。
セールにかかってるものでお手軽にそのまま使いたいとかなら
Realistic Effects Pack 2とかの方がそれっぽい感じはする
0112名前は開発中のものです。2014/11/05(水) 17:22:13.03ID:dneqDBzs
>>82
すみません、上手くいきました!
勉強します。。。
0113名前は開発中のものです。2014/11/05(水) 18:53:31.18ID:U3Wm6MKx
痴呆のアセット爺さんはちゃんと>>110に答えてやれよw
0114名前は開発中のものです。2014/11/05(水) 19:36:11.41ID:2Gb7sIf4
察してやれよ。アンインストールしてるのバレちゃうだろw
0115名前は開発中のものです。2014/11/05(水) 22:13:16.80ID:FpIyV9JB
>>110
アセットをかえば簡単にエフェクトをくれると思いますよ
0116名前は開発中のものです。2014/11/05(水) 22:40:42.96ID:U3Wm6MKx
>>115
くれるって何?
日本語の表現おかしくね?
百歩譲って「作れる」
普通なら「手に入る」じゃね?
0117名前は開発中のものです。2014/11/05(水) 23:12:46.74ID:2Gb7sIf4
察してやれよ。在日朝鮮人ってバレちゃうだろw
0118名前は開発中のものです。2014/11/05(水) 23:25:25.11ID:ckLqigRY
マジレスするとつくれるのつが抜けただけじゃないかと
0119名前は開発中のものです。2014/11/05(水) 23:42:04.84ID:2Gb7sIf4
何で動揺してんの?w
0120名前は開発中のものです。2014/11/05(水) 23:53:49.63ID:Znbarsi0
今日も元気な中学生w
0121名前は開発中のものです。2014/11/06(木) 00:29:12.35ID:2I+M5i79
エフェクトをくれると思いますよ(キリッ
0122名前は開発中のものです。2014/11/06(木) 00:36:46.25ID:fNSWnrNC
せっせと手打ちで粘着する姿に泣いた
0123922014/11/06(木) 01:22:21.32ID:terXi/GU
>107
なるほどLateUpdateで設定してしまえば一応反映出来るんですね
試しにサンプル作って動作させてみてLateUpdateでのカラーの反映を確認出来ました。
最後に仰ってる事も最もなのでAnimatorで制御するかスクリプトで制御かは
きっちり分けて考えてみようと思います。
0124名前は開発中のものです。2014/11/06(木) 05:14:12.82ID:B5I5W2i/
MonoDevelopやばくない?
ファイルが見つからないとか読み込めないとか多い気がする。
つーかGUIが使えなくなった
Labelが定義されてないとか言われて意味不明なんだけど
0125名前は開発中のものです。2014/11/06(木) 06:17:27.87ID:B5I5W2i/
自己解決。やばいのは俺の頭だった。
すげー昔のサンプルスクリプトがGUIをオーバーライドしてやがった。
予測がまったく出てこないわけだ。
0126名前は開発中のものです。2014/11/06(木) 07:31:17.33ID:87sJAJ+/
書き込む前に一呼吸おかない間抜けは
これからも苦労するだろうねw
0127名前は開発中のものです。2014/11/06(木) 08:43:05.29ID:qYw6ezhl
>>126
わざわざそんなこと書かんでも…
0128名前は開発中のものです。2014/11/06(木) 12:59:44.82ID:F7RERGXP
人生経験に基づく貴重なアドバイスやで
0129名前は開発中のものです。2014/11/06(木) 15:44:18.30ID:gwGfn7pW
3Dのカートゥーンチックな子供向けアクションゲーム作るんだけど、良い感じのお勧めアセット無い?
TidyMapperとFXmakerとNGUIは使ってる
0130名前は開発中のものです。2014/11/06(木) 17:58:53.87ID:5lVD+Jhh
unityの既存にあるエフェクト素材を
試しているのですが、
全体拡縮が上手くいきません。
こちらは、エフェクトのパラメーターを
一つ一つ調整していくしかないのでしょうか?
宜しくお願いします。
0131名前は開発中のものです。2014/11/06(木) 19:08:02.94ID:nyUimD88
いやmonodevelopやばいよ
何か変なエラーでまくる
0132名前は開発中のものです。2014/11/06(木) 19:21:44.90ID:IwoS640y
>>130
Unityのエフェクト調整はアセットをかえばいいと思いますよ
0133名前は開発中のものです。2014/11/06(木) 20:02:49.09ID:wRkTYMZ/
Unity初心者です
3dsmaxで作ったキャラをvre.4.5にfbxで読み込み、idle・walk・run設定をしたのですが
モーションは問題なく動くのですが、原点から移動せず、ずっと原点で足踏み状態です
コリジョン設定も確認し、地面と接していないので、なぜ前後左右へ進めないのか分かりません
本やネットでいろいろ調べたのですが解決策が見当たらず、こちらに書かせていただきました

すごく初歩的なことで恐縮ですが、何かお心当たりのある方がいましたら教えていただけたら助かりますmm
0134名前は開発中のものです。2014/11/06(木) 20:35:04.31ID:5lVD+Jhh
>>109
トップノードにアニメキーがはいっているとか?
0135名前は開発中のものです。2014/11/06(木) 21:06:36.82ID:IwoS640y
>>133
キャラクターの移動関連は、本など読まなくても、アセットを買えば簡単に解決しますよ
0136名前は開発中のものです。2014/11/06(木) 21:18:50.19ID:2I+M5i79
>>132
>>135
エフェクトをくれると思いますよ(キリッ
0137名前は開発中のものです。2014/11/06(木) 22:16:16.46ID:wRkTYMZ/
>>135
ありがとございます(ペコリ
初心者なので、まずアセットに頼らずやろうとしたのですが、ちょっと敷居が高かったですね
色々とアセットを探してみようと思います
0138名前は開発中のものです。2014/11/06(木) 22:24:34.27ID:ul+n67HV
「Unityではじめる2Dゲーム作り徹底ガイド」発売して1週間になりますが
まだ改修されませんか?まず著者は謝るべきでは?

こんなに厚い本でも内容が間違いだらけでは凶器にしか使えませんよ
0139名前は開発中のものです。2014/11/06(木) 23:07:08.75ID:/jM2k/6c
>>133
同じことで躓いてます。もし解決策分かりましたら教えてください
0140名前は開発中のものです。2014/11/06(木) 23:09:07.29ID:ixMJSalV
>>133
そもそも何を使ってどう移動させようとしているのか
によって原因が異なるのでそれだけでは原因はわからない。
Mecanimでやろうとしているならアニメーション自体が
移動していなければならない。
キャラコンやMecanimだけどキー操作で移動、にしている場合には
何かしらコードがおかしい。
0141名前は開発中のものです。2014/11/06(木) 23:58:50.28ID:wRkTYMZ/
>>140
説明が足らずすみませんmm
Autodesk Maya トレーニングブック3のサンプルキャラ(女性)と同じ動作をさせようと思い、MAXでモーションまでつけた自作キャラをFBXで読み込みました
アニメーション(idle・walk・run)をcaractor walkで設定し、caractor controlerでコリジョン付け、PLAYを押して十字キーでいざ動かしてみるとモーションせず棒立ちのまま、移動はできました
なぜモーションが作動しないのかと、あれこれいじって、リグをLegacyに設定したらモーションがきちんと動くようになったのですが、今度は十字キーを押しても移動されず原点でモーションするだけでした

そして不思議なことに、子供にしているカメラの視界からキャラを消した状態では、移動しているようなので、キャラがロックされているのかとも思いましたが、どこを見たらいいかもよく分からず・・・
本のサンプルキャラと同じように設定をしているはずなのですが、今現在どこが違うのかわからない状態です
同じようなことで悩んでいるお方がいらっしゃったら、ご経験を聞かせていただけたらなと思い、こちらで質問させていただきましたmm
0142名前は開発中のものです。2014/11/07(金) 00:02:57.99ID:bIbPab/p
追記:Mecanimは使用していません
0143名前は開発中のものです。2014/11/07(金) 00:43:21.42ID:YWJL8vD5
>>141
まぁ途中で何をしているか判らない時点で
完全に最初から組みなおしたほうがいい。
一からやっても10分くらいで終わる作業だ。
今おかしくなってる原因を探るより絶対早い。
0144982014/11/07(金) 01:36:11.92ID:jPeS+PJT
>>134
Animatorとかですか?確かにコンポーネントに入ってます。周期的にアニメーションするようになっていました。
0145名前は開発中のものです。2014/11/07(金) 01:37:18.97ID:bIbPab/p
>>143
そうですね、やはりそのほうがいいですね
ありがとでした(ペコリ
0146名前は開発中のものです。2014/11/07(金) 03:22:20.99ID:m62G8wV2
セーブデータ作るときの暗号化はどうやっていますか?

暗号化アルゴリズム実装するのは正直面倒(というか誤った実装したらやばい)ので、セールやっているEasySave2というアセットの購入も考えています
こちら使っているひといたら使用感どうでしょう?
0147名前は開発中のものです。2014/11/07(金) 05:32:30.03ID:ffzpO2Jl
子にタグを一括で適用する方法ってありませんか?
ひとつひとつ階層開いて選択してやるしかないでしょうか
0148名前は開発中のものです。2014/11/07(金) 05:52:38.00ID:2af3gaIi
UnityちゃんとSample Asset Betaをインポートして、
Sample Assets > Sample Scenes > Scenes > Third Person Characterを開いて、
Sample Assets > Characters > Third Person Character > Animator > Third Person Animator ControllerのGroundedの
Blend TreeのMotionの中のアニメーションRunをUnityChan > Animations > Run00_Fに変更すると、
モーションは実行されますが足踏み状態で前に進みません。
これは何が原因なのでしょうか?
0149名前は開発中のものです。2014/11/07(金) 08:29:12.82ID:M6VHzB4P
>>136
やめて!アセット爺さんだって人間なのよ!
生きているのも恥ずかしい程の間違いはアセットを買っても消せないのよ!
0150名前は開発中のものです。2014/11/07(金) 10:49:23.87ID:YWJL8vD5
>>147
ない。自分でExecuteInEditModeで書けばいい。

>>148
実物見てないがそういうモーションなんだろう。
Mecanimはモーションの中に移動もふくまれていて
その移動量にしたがってキャラも動かすが
そうじゃなくてキーで移動を決定したい場合は
その場足踏みのモーションが欲しいから
そういうモーションが入ってるんだろう
0151名前は開発中のものです。2014/11/07(金) 12:44:46.95ID:KOV6xguN
>>147
アセットをかえばできるかもしれませんよ
0152名前は開発中のものです。2014/11/07(金) 13:57:52.79ID:rn7z7wOV
アイテムのシステムってどうやって作ってますか?
アイテムを名づけたり改造したり腐らせたりしたいのですが良い方法などあったらアドバイスお願いします。
0153名前は開発中のものです。2014/11/07(金) 14:17:44.09ID:a7b7Q0yI
そんなことがわからないようじゃゲーム作り向いてない
0154名前は開発中のものです。2014/11/07(金) 14:50:25.67ID:2af3gaIi
>>150
ありがとうございます
Run00_Fは足踏みモーションではないと思うのですが・・

すみませんどなたかお暇な方、Sample Asset BetaとUNITY-CHANをダウンロードして試してみて頂けませんか
0155名前は開発中のものです。2014/11/07(金) 16:06:18.95ID:klvd4dxU
>>152
この辺理解できるように頑張れ。
http://www.techscore.com/tech/DesignPattern/Decorator.html/
0156名前は開発中のものです。2014/11/07(金) 16:43:16.89ID:KOV6xguN
>>152
アイテムの管理はアセットをかえば簡単です
プログラムなんていりません
0157名前は開発中のものです。2014/11/07(金) 17:26:26.24ID:M6VHzB4P
>>152
例えばアイテムAとアイテムBを合成してアイテムCを作る場合何が必要だと思う?
これが分からないなら背伸びしないでブロック崩しみたいな簡単な物から作ることをオススメする
それも最後まで完成させられないようではRPG的なものなんてとてもじゃないが完成させられない
0158名前は開発中のものです。2014/11/07(金) 20:26:36.84ID:6Net4/RL
どういうゲームの中でのアイテムなのかもわからないのに教えられない
腐る以上ダンジョン系なんだろうけど
0159名前は開発中のものです。2014/11/07(金) 20:50:13.06ID:rn7z7wOV
>>155
機能別に作ってどんどん追加しているんですね。
デザインパターンとかまともに考えたことがないので参考にしてみます。

>>157
簡単なゲームなら何個か作ったんですが今回作ってるのは自分にとって難し過ぎました
アイテムの変化は無くてもゲームにはなるので最悪IDとデータベースで作ろうかと思います。

>>158
仰るとおりのローグライクのマップを元に3DDungeon作ってFPSRPGみたいな感じで作ってます。
時間経過で食料が腐っていったり銃の機能を合成で変化させたりとか考えていました。
0160名前は開発中のものです。 転載ダメ©2ch.net2014/11/07(金) 21:31:28.68ID:MBxwHkrL
ゲームオブジェクトのリストをゲームオブジェクトのスクリプト内の変数に応じてソートしたいと考えています。
以下のソースを書いたのですが「The object of type 'GameObject' has been destroyed but you are still trying to access it.」エラーが出て困っています。
(もうそれデストロイ済みだよエラー)
エラーはスクリプトをGetComponent<>()で呼び出した段階で出ます。

修正方法か、あるいはより適切なソート方法をご存じの方がいたら教えて下さい。

//List<GameObject>型のMap_TrophyをスクリプトItem_BodyのName変数の順で並べ替えます。
//※string型で一旦宣言しているのは別の要素に応じて比較する文字列を変えたいからです。

Map_Trophy.Sort(delegate(GameObject G01, GameObject G02){
string a=G01.GetComponent<Item_Body>().Name;
string b=G02.GetComponent<Item_Body>().Name;

return string.Compare(a, b);
});
0161名前は開発中のものです。2014/11/07(金) 22:47:37.49ID:qNVmZNJq
>>151
>>156
エフェクトをくれると思いますよ(キリッ
0162名前は開発中のものです。2014/11/07(金) 22:56:02.78ID:KOV6xguN
>>160
ソートは、アセットをかうと簡単にできると思いますよ
0163名前は開発中のものです。 転載ダメ©2ch.net2014/11/07(金) 23:09:41.36ID:MBxwHkrL
んー
Item_Body自体をリストにしてやればエラーにならないけど、
削除するときのこととか考えたらゲームオブジェクトの方をソートしてそれを元にItem_Bodyのリストを作りたいなあ・・・
アセットおじさんじゃなくてまともな人、なにかわかったら教えてくれ・・・
0164名前は開発中のものです。2014/11/07(金) 23:38:12.19ID:ybUFLXZa
>>163
どうやってリストを作成したのかわからんので推測だけど
エラーメッセージが示す通り、ゲームオブジェクトが消えてるのが原因だろう
ソートする前にリストから無効なゲームオブジェクトの参照を削除すればいいんじゃないの?

ソート処理自体は間違ってないと思う
0165名前は開発中のものです。 転載ダメ©2ch.net2014/11/07(金) 23:38:31.63ID:MBxwHkrL
LINQでやっても一緒やな・・・
0166名前は開発中のものです。 転載ダメ©2ch.net2014/11/07(金) 23:42:00.53ID:MBxwHkrL
>>164
例えば実行前にMap_Trophy.Countってすると数が表示されるし、別処理でMap_Trophy.xxxって何かしら処理すると表示されるんですよね・・・
自前の関数の引数だとこういうエラー出た時は引数のゲームオブジェクトにrefつければ回避できるんですが、上記のケースだと付けれない
元のゲームオブジェクトはメソッド内で生み出してるんで、消えてる可能性もあるんですが、メモリから消えたわけじゃなさそうという
0167名前は開発中のものです。2014/11/07(金) 23:45:23.03ID:HKwuhtbN
頭の悪さがにじみ出てますな
0168名前は開発中のものです。2014/11/08(土) 00:25:33.54ID:VUCtvIDh
>166
DestroyしたGameObjectを経由してGetComponentするから落ちるんだよ
死んだオブジェクトがListに残らないようにしないと駄目
0169名前は開発中のものです。 転載ダメ©2ch.net2014/11/08(土) 00:43:47.95ID:qZ7K1tQP
>>168
ゲームオブジェクト自体をリストにしたものとスクリプトをリストにしたものと両方使っていて
今回のケース以外ではどちらもデータを引き出せるのですが、これも死んでいる状態なのです?

Awakeでメソッドを呼んでその中でゲームオブジェクトを宣言してリストに加える事が多いので、消えているんじゃないかと言われればそうなのですが
普段呼べる理由がよくわからなくなります
仮にメソッドが終わる場合に自動でDestroyされていて、Destroyされてもデータが呼べることが一般的なら、
スクリプト上でDestroyせずに宣言するにはメソッド以外で呼ぶしかないのでしょうか
0170名前は開発中のものです。2014/11/08(土) 00:54:19.10ID:VUCtvIDh
>>169
エラーメッセージ見れば一目瞭然だよね?
ソート対象のリストに入っているGameObjectがすでにDestroy済みなのが問題なんだよ
GameObjectの参照はListに残っているけどDestroy済みだとGetComponentは動作しないってだけ。
Itemのリスト管理してる部分とItemのGameObjectをDestroyしてる箇所と連携とらないと駄目って事
C#のobjectなら参照が残っていれば生きてるけどGameObjectにひっついたComponentを取得しようとしてもGameObjectがDestroy済みだとGetComponent関数がそれを拒否するように作られてるから出来ないってだけ
0171名前は開発中のものです。 転載ダメ©2ch.net2014/11/08(土) 01:13:33.09ID:qZ7K1tQP
>>170
詳しくありがとうございます
参照は生きているけどデストロイはされているのですね

連携というとメソッドで呼んだ場合、具体的にはどうすれば大丈夫みたいな具体例はありますでしょうか?
0172名前は開発中のものです。2014/11/08(土) 01:59:02.39ID:2LZBdkJq
>>169
アセットをかえば簡単に解決すると思いますよ
0173名前は開発中のものです。2014/11/08(土) 02:03:38.10ID:BsbRj464
>>171
具体例も何も、どこかしらでリスト内のGameObjectをDestroyするようにしてるはずだから、
同じタイミングでリストからRemoveしてあげればいいだけでは?
0174名前は開発中のものです。2014/11/08(土) 02:29:31.93ID:SVyLxskE
>>159
FPSRPGなんて高度なことするのにアイテムで引っかかるのか、と思ったけどUnityだから出来るんだなあ
腐らせるなら、一定時間ごとに全アイテムでループして、それぞれの時間経過によるアクションを実行する
(delegateとか使ったり)
合成なら、どんなインターフェイスかわからないけど、合成素材を選択したら合成状態フラグ建てて、
その状態で武器を選んだら武器の性質を変化させればいいんじゃない?
0175名前は開発中のものです。2014/11/08(土) 04:12:37.19ID:tGji8wEW
昨日、キャラが前後左右に移動しない原因を質問した者です
お陰様でアレコレいじって、ようやく移動ができました、ありがとうございました(ペコリ
そして今度は、Unityに読み込んだキャラの片方の手足がポリゴン反転しているのですが、両面ポリゴンにするしか方法はないのでしょうか
Reverse Mesh Normalsをいうアセットをネットで拾ったので使ってみたのですが効果がなく、またこちらで質問させていただきましたmm
0176名前は開発中のものです。2014/11/08(土) 04:19:38.88ID:YZolAzX7
>>155
デコレーターパターンなんかVBAみたいなクソ言語でしかつかわねーよ。
01771752014/11/08(土) 04:49:59.11ID:tGji8wEW
自己解決しましたmm
0178名前は開発中のものです。2014/11/08(土) 09:29:28.83ID:bnfdi8o5
>>169
C#のDestructorとUnityのDestroyを混同してるように見える
すでにシーンから削除されたGameObjectに対してGetComponentを呼んでない?
0179名前は開発中のものです。2014/11/08(土) 15:03:42.23ID:fWKcc7Yv
terrainの上ではAddtorqueがしっかり機能してくれるのに、Planeの上では機能してくれません
何故こうなるのかわかりません
誰か教えてください
0180名前は開発中のものです。2014/11/08(土) 15:41:24.88ID:QbMDKJQG
GameObject obj = Instantiate(prefab,transform.position,transform.rotation) as GameObject;
if (!obj) Debug.Log("null");

とするとゲーム画面ではオブジェクトが表示されているにも関わらずnullと出力されるのですが、何故objに格納されないのでしょうか
これより前に何か操作が必要なのでしょうか
0181名前は開発中のものです。 転載ダメ©2ch.net2014/11/08(土) 16:11:12.43ID:qZ7K1tQP
レスありがとう!

>>173
そのGameObjectは今も使っているのでリムーブは厳しかったり・・・
正確にはGameObjectのスクリプトを別に格納したリストですが
ゲームオブジェクト自体のリストは余り使わんものなのかな・・・たしかにスクリプトのリストがあればなくても今のところは困らない

>>178
ゲームオブジェクトもスクリプトのリストもシーンから削除されないように設定されているのですが、
(staticのゲームオブジェクトでこれを生成したクラスとそのクラスをアパッチしたゲームオブジェクトを削除しないようにしている)
後ほど確認してみます
0182名前は開発中のものです。2014/11/08(土) 16:58:00.24ID:hD/mnMZ6
>>180
プログラムは難しいですね。アセットをかいましょう。すぐにゲームが完成しますよ
■ このスレッドは過去ログ倉庫に格納されています