2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【3Dゲームエンジン】Unity質問スレッド15

1 :名前は開発中のものです。:2015/01/18(日) 15:07:35.72 ID:KSRpGyGF.net
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質問スレッド14
http://peace.2ch.net/test/read.cgi/gamedev/1418120993/

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

■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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
注意事項:アセットおじさんは優しく愛でましょう

911 :名前は開発中のものです。:2015/02/25(水) 11:58:23.76 ID:x5QR8OkQ.net
なるほど分かりました

912 :名前は開発中のものです。:2015/02/25(水) 14:23:25.77 ID:8KN6Kdry.net
Destroy済みのオブジェクトにアクセスしてしまってエラーが出てしまうんですけど
if(gameObject!=null)って感じでnullチェックしてもうまくいきません、、、
どうすればいいですか?

913 :名前は開発中のものです。:2015/02/25(水) 14:53:53.70 ID:3EBlWlLD.net
>>912
それUnity関係なくC#のプログラムでうまく管理できていないだけじゃね?
その gameObject てのはどこからきてどこでチェックしてんの?

914 :名前は開発中のものです。:2015/02/25(水) 15:29:09.00 ID:8KN6Kdry.net
>>913
こちらはライフルから弾丸(Sphere)が出るスクリプトです。
#pragma strict
var Sphere: GameObject;
function Update () {
if( Input.GetButton("Fire1")) {
var muzzle = transform.Find('Lo_Muzzle');
var bul : GameObject = Instantiate(Sphere,muzzle.position,muzzle.rotation);
var direction = (muzzle.position - transform.position).normalized;
bul.rigidbody.velocity = direction * 50;
}
}
-------
var bul : GameObject = Instantiate(Sphere,muzzle.position,muzzle.rotation);
この行でエラーが出ているようです。

MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, Vector3 pos, Quaternion rot)
UnityEngine.Object.Instantiate (UnityEngine.Object original, Vector3 position, Quaternion rotation)
bullet.Update () (at Assets/bullet.js:11)

915 :名前は開発中のものです。:2015/02/25(水) 15:29:36.07 ID:8KN6Kdry.net
>>913続き
こちらは弾丸のスクリプトで一定時間が経つと消えるようなつもりで書いていますが消えてくれません。。。
#pragma strict
function Start () {
Destroy(gameObject,3);
}
//mobにぶつかると爆発する関数を呼び出します
function OnCollisionEnter(collisionInfo: Collision){
if(collisionInfo.gameObject.tag == 'mob'){
collisionInfo.gameObject.SendMessage('ApplyDamage', SendMessageOptions.DontRequireReceiver);
}
}

916 :名前は開発中のものです。:2015/02/25(水) 16:18:57.34 ID:xE+krIzl.net
SphereがDestroyされてますって怒られてるよ
なんか訳のわからん作り方してるねぇ。Javaはよく知らないけど。自殺関数?はぁ?w

917 :名前は開発中のものです。:2015/02/25(水) 16:29:09.74 ID:9xYq2Hx9.net
>>914Startでdestroyしたらだめじゃね

918 :名前は開発中のものです。:2015/02/25(水) 17:17:27.49 ID:9IYtGeYP.net
>>914
よくわからんがSphereにオブジェクトがセットされていないだけのように見える。
そうでなければマズルオブジェクトが見つかってないかどっちかだな。
あと894のスクリプトは普通に動いた。
単体でテストできるスクリプトは単体でテストした方がいいよ。

919 :名前は開発中のものです。:2015/02/25(水) 17:35:08.17 ID:8KN6Kdry.net
>>913 >>916 >>917 >>918
Sphereが悪さしてたようです...orz
var bul : GameObject = Instantiate(Sphere,muzzle.position,muzzle.rotation);
の前でSphereのnullチェックして>>915のDestroyを消したらとりあえずエラーはでなくなりました。
でも弾丸(Sphere)は発射後消せなくなったのでまた試行錯誤してみますありがとうございましたorz

920 :名前は開発中のものです。:2015/02/25(水) 17:54:14.60 ID:9IYtGeYP.net
>>919
あ〜、ひょっとしてあれか?ヒエラルキーにある弾をセットして
しかもその弾にはその3秒後に消滅するスクリプトがついてるってやつか。

そういうのはいっぺん弾をプロジェクトに放り込んでプレファブ化するんだ。
それからSphereにセットする。

総レス数 1022
309 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★