募集要項

  • ■ボイスの募集は終了しました。

    非常に沢山のご応募ありがとうございました!

     結果はこちら
2017年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

« 【Unity Action】エフェクトの親子設定関連 | トップページ | 【Unity Tips】 using UnityEditorを使うけどEditorに入れたくない »

2013年6月14日 (金)

【Unity Action】 進捗と実行中に編集した内容を元プレハブに反映とか

引き続きデバッグ画面実装中です。

で、今日は細々としたバグを直しつつ
使用可能な行動のウィンドウを作成。
武器によって使える行動が変わるので、
その辺りを考慮したデバッグパーツです。

130614

・左チェック:その行動を実行中かどうか
 これは、自動的に切り替わります。

・中心のラベル:行動名(黄:通常攻撃、青:技、赤:デバッグ拡張枠)
 ここをクリックすると、その行動が再生され、
 該当する技のインスタンスが自動的に選択されます(編集し易いように)
 また、赤色の技は、事前に指定しておけば、
 武器の設定とは別にいくつも行動を追加できるようにしてみてます。

・右ボタン:技の変更と、パラメータの保存ボタン
 通常時は技の置き換えになっていて、
 技ラベルををクリックすると保存ボタンに変わるようになってます。

…技変更はまだ未実装ですヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ
Editor拡張でウィンドウ作るか、ドロップダウンリストで済ますか…。悩みます。。。


で、以下今回の主題です。

実際にこのデバッグシーンで編集した技の設定を、
元のプレハブに反映させるには・・・?という所でちょっと引っかかりました。
色々調べたんですが、とりあえず結果だけ。

//ゲームオブジェクトの元となるプレハブを取得
Object _Prefab = PrefabUtility.GetPrefabParent(編集オブジェクト);
//元のプレハブを編集したオブジェクトに置き換える
PrefabUtility.ReplacePrefab(編集オブジェクト,_Prefab);


苦労した割に、結局これだけでいけました( ; ゚Д゚)

で、一応ですが注意点が3点ほど。

using UnityEditor; が必要

・編集オブジェクトは「Instantiate」ではなく、
 「PrefabUtility.InstantiatePrefab」で生成しないとプレハブが取得できない。
  ⇒デバッグ時のみPrefabUtility.InstantiatePrefabで生成し、
   ビルド時はInstantiateにする等の考慮も。

・ReplacePrefab後に、リンクが切れたりする。
  ⇒必要に応じて再設定を。

他のデバッグ機能でも使っていきそうなので、
覚えておいて損は無さそうです。

« 【Unity Action】エフェクトの親子設定関連 | トップページ | 【Unity Tips】 using UnityEditorを使うけどEditorに入れたくない »

Unityアクションゲーム製作」カテゴリの記事

コメント

いつも本当に参考になります(>_<)

ところで情報はどこから仕入れてくるのでしょうか?

情報が多くてこういう質問は困ると思いますが
Karasuさんが一番よく見に行くサイトを一つだけでも教えていただけると嬉しいです。

>0号さん
微妙な返答で申し訳ないですが、
基本的には特定のサイトを見に行く事はしていません。

ただ、「特定のサイト」では無いだけで、
「ググる」のはまず真っ先に行います( ̄▽ ̄)みなさんありがとう!

で、ググって情報が無さそうだったら、ドキュメントを漁ってみる、
という流れでしょうか。

そういう意味ではドキュメントがよく見に行くサイトかもですね(笑)
http://docs-jp.unity3d.com/

やっぱり必要な情報をピンポイントでその都度ググるしかないですよね

そういう時にKarasuさんのように実際の製作の様子を残してくれる方の
存在はすごくありがたいですヽ(´▽`)/

ドキュメントも和訳が進んでてほんとにみなさんに感謝です(*^^*)

プレハブの反映をしたいと思いKarasuさんのサイトにつきました。

//ゲームオブジェクトの元となるプレハブを取得
Object _Prefab = PrefabUtility.GetPrefabParent(編集オブジェクト);
//元のプレハブを編集したオブジェクトに置き換える
PrefabUtility.ReplacePrefab(編集オブジェクト,_Prefab);

このコードの「編集オブジェクト」はどのようにかくのでしょうか?
” ”で囲ってみたり変数で試してみましたが、取得できません・・・
お教えいただけると嬉しいです。

>袋さん

編集オブジェクトは、
基本的にはゲームオブジェクトになります。

http://docs.unity3d.com/ScriptReference/PrefabUtility.ReplacePrefab.html
http://docs.unity3d.com/ScriptReference/PrefabUtility.GetPrefabParent.html

にあるように、
ReplacePrefabはGameObject
GetPrefabParentはObject
となっていますので、
まずはGameObject形式のデータを生成してからそれを当てはめてみて下さい。

例えば・・・
//インスタンスを生成
GameObject obj = PrefabUtility.InstantiatePrefab((GameObject)Resources.Load(Path)) as GameObject;
// インスタンスから(生成親の)Prefabを取得
Object prefab = PrefabUtility.GetPrefabParent(obj);
// インスタンスの状態をPrefabに適用
PrefabUtility.ReplacePrefab(obj, prefab);

といった感じでしょうか。

返信ありがとうございます。
試してみたのですが、オブジェクトが大量生産されpcが重くなるという謎の現象が発生しましたww
でも、ログが出たので処理はできてました。あとちょっとです。
ありがとうございました!

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1500357/52038948

この記事へのトラックバック一覧です: 【Unity Action】 進捗と実行中に編集した内容を元プレハブに反映とか:

« 【Unity Action】エフェクトの親子設定関連 | トップページ | 【Unity Tips】 using UnityEditorを使うけどEditorに入れたくない »

Twitter等

  • にほんブログ村 ゲームブログ ゲーム制作へ

メールフォーム

  • 直接コンタクト取りたい方はこちらからどうぞ

サイト内検索
ココログ最強検索 by 暴想