Assets/Utageフォルダー移動後のバージョンアップが出来ません


Unity 5.2.2f1 宴2.5.0
 
いつもお世話になっております。
宴のバージョンアップが出来ずに困っております。
 
当方のプロジェクトでは、宴をインポート後、UnityのAssets配下のUtageフォルダーをまるごと移動しております。
Utageフォルダーの移動を行う以前のバージョンアップは問題なく出来ていました。
行った手順としては、
 1./Assets直下から移動したUtageフォルダーをDelete。(UnityのEditor上で)
 2.AssetStoreから宴をインポート。
 3./Assets/Utageフォルダーをまるごと移動。(移動先はインポート前にDeleteしたパスと同等)
 4.Unityを再起動。
 
この状態で、カスタムコマンドなどのスクリプトで参照切れのエラーが出ており、UnityのメニューからToolsも消えてしまっています。
Q&Aの「宴を2.5.0にバージョンアップしたら、エラーが発生してしまいました」等、拝見しましたが解決方法が掴めていません。
初期インストール後にUtage本体のフォルダー移動を行った際に、うまくバージョンアップ出来る手順がございましたらご教授頂きたいと思います。
 

12 回答

スタッフ 2015年12月17日

手順としては問題ないはずです。

>カスタムコマンドなどのスクリプトで参照切れのエラーが出ており、UnityのメニューからToolsも
この現象が起きているということは、おそらくコンパイルエラーが起きているのだと思います。
コンソールになにかエラーメッセージがでていないでしょうか。
 

#1
  1. マッドネスラボ スタッフ 2015年12月17日
    ちなみに、2.5.0->2.5.4(最新版)にバージョンアップしたということでしょうか

匿名 2015年12月17日

早速のご返答、ありがとうございます。
 
バージョンアップ:2.5.0->2.5.4(最新版)
コンソール:
Assets/Scripts/ThirdParty/Utage/Scripts/ADV/DataManager/SettingData/AdvScenarioSetting.cs(16,55): error CS0246: The type or namespace name `SerializableDictionaryFileReadKeyValue’ could not be found. Are you missing a using directive or an assembly reference?
Assets/Scripts/ThirdParty/Utage/Scripts/ADV/DataManager/SettingData/AdvScenarioSetting.cs(53,51): error CS0246: The type or namespace name `SerializableDictionaryFileRead`1′ could not be found. Are you missing a using directive or an assembly reference?
Assets/Scripts/ThirdParty/Utage/Scripts/ADV/Graphic/Object/AdvGraphicObject3DModel.cs(20,48): error CS0246: The type or namespace name `AdvGraphicObject’ could not be found. Are you missing a using directive or an assembly reference?
 
このような状況です。

#2

スタッフ 2015年12月17日

なぜか宴の一部のスクリプトが存在しないか、コンパイルできないという状態のようです。
DLしなおしてみても同じような状態でしたら、こちらで調査いたします。
プロジェクトAssetsフォルダ以下を丸ごとzipなどにして、こちらに送信お願いします。

https://www.dropbox.com/request/4saRpEpvWwiHqFyZy0wI

#3

匿名 2015年12月17日

申し訳ありませんが、Assets配下には機密保持上お渡し出来ないものが多数含まれております。
インポートされたUtageフォルダーのみでしたらお渡し出来ると思いますが、これでは調査して頂く事は出来ないでしょうか。

#4
  1. マッドネスラボ スタッフ 2015年12月17日
    はい。それでかまいません、お願いします。

匿名 2015年12月17日

ご指定のURLにアップロードいたしました。
 
ファイル名:Utage.zip
サイズ:37.1MB
 
ご査収下さい。

#5

スタッフ 2015年12月17日

いただいたプロジェクトを確認したところ、やはり大部分のスクリプトが削除されてしまっている状態でした。
一度Utageフォルダを削除してから、アセットストアからDLしなおしてみてください。
DL直後に、コンソールを確認してコンパイルエラーが出ていれば、AssetStoreの問題かもしれないので、Unity側に確認してみます。
 
もし、DL直後は問題ないのであれば、フォルダを移動したタイミングなどでスクリプトファイルが削除されてしまっているのだと思います。
通常はありえないので、何か別のプラグインやバージョン管理ツールの影響かもしれません。
 

#6
  1. マッドネスラボ スタッフ 2015年12月17日
    DLする前に、完全に宴のアセットが削除されているか確認してください。パスが違う別の場所にある場合や、一部のアセットのみが別の場所にある場合でも正常にDLできなくなるので注意してください。

匿名 2015年12月17日

Asset直下および移動後のフォルダーの両方からUtageフォルダーが削除されている事を確認し、AssetStoreからのインポートしましたが、この状態(Assets/Utageの状態)で既にコンパイルエラーが出ております。
 
また、別の手順を試したところ気になるのが、「移動先のUtageフォルダーを残したままAssetStoreからインポート」すると、以下のエラーが出力されます。
Assets/Utage/Scripts/ADV/AdvEngine.cs(35,31): error CS0102: The type `Utage.AdvEngine’ already contains a definition for `StartScenarioLabel’
Assets/Utage/Scripts/ADV/AdvEngine.cs(44,24): error CS0102: The type `Utage.AdvEngine’ already contains a definition for `startScenarioLabel’
Assets/Utage/Scripts/ADV/AdvEngine.cs(50,39): error CS0102: The type `Utage.AdvEngine’ already contains a definition for `DataManager’
….
 
これは、「移動後のUtageフォルダーとAssets直下のUtageフォルダーも欠損のない状態」だと推測しているのですが、この後にどのような手順を踏んでUtageフォルダーを移動しても参照切れのエラーとなってしまいます。
 

#7

スタッフ 2015年12月17日

>Asset直下および移動後のフォルダーの両方からUtageフォルダーが削除されている事を確認
了解しました。
 
 
>「移動先のUtageフォルダーを残したままAssetStoreからインポート」
これは単純に同じプログラムが二つ以上あるために、「すでにそのプラグラムは別のファイルで定義されています」というエラーです。
重複して二個以上の同じファイルがあるとリンク状態がメチャクチャになってしまうので、リンクエラーがあちこちで発生しますので、これは避けてください。
 
1.AssetStoreの状態
ss_411
 
2.宴を削除した後にインポートする場合はこうなるはず。
 ss_413
 
 
3.インポート先
ss_412
 
 
4.インポートされていない状態
ss_410
 
1~3は正しい手順で、先ほどいただいたプロジェクトは4の状態になっています。
例として、Editor\Scripts\Attribute\EnumFlagsAttributeDrawer.cs としていますが、実際にはかなりの数のスクリプトが同じようにインポートできていません。
 
まずは
・2のインポート時に、AssetStoreの構成(1の画像)と同じファイルがインポートされているかを確認する必要があります。
・2のタイミングで、AssetStoreにはあるファイルがインポート対象にない場合は、プロジェクト内のどこかに同じファイルがまだ残っている状態なので、検索などをして削除してください。

・プロジェクト内のどこにも見当たらない場合は、AssetStoreのシステムのエラーとしか考えられないので、Unityのサポートに問い合わせてみてください。
・また、2のタイミングでインポート対象になっているにもかかわらず、3の状態でファイルが消えている場合も、Unityかアセットストアのシステムエラーになりますので、やはりUnityのサポートに問い合わせてみてください。
 
 
Unityのサポートはこちらになります
http://japan.unity3d.com/company/contact/
問い合わせの際には、このQ&Aのページも載せていただくとスムーズになるかと思います。
ただ、プロジェクトファイルを渡せないとなるとUnityのほうでも原因が特定しづらいかもしれません。
 
 
 
 
 
 
 
 

#8
  1. マッドネスラボ スタッフ 2015年12月17日
    私も原因がわからないため、お手数ですが、Unity側の回答があった場合は結果を伝えていただけると助かります。

匿名 2015年12月18日

Asset直下および移動後のフォルダーの両方からUtageフォルダーが削除されている事を確認後、AssetStoreからインポートを行い、ご提示頂いた1〜3の状態になっている事まで確認出来ました。
3の状態の時に、下記のエラーが出ています。
Error importing folder (The GUID b94a6388cd639b841b2c37614f976a64 is already mapped to Assets/Scripts/ThirdParty/Utage/Editor. But the meta data wants it to be mapped to assets/utage/editor)
これは移動後のUtageフォルダーのパス情報がどこかに残っているという事でしょうか。
Assets/Scripts/ThirdParty/Utageのフォルダーは削除済みである事は確認出来ております。

#9

スタッフ 2015年12月18日

>Error importing folder (The GUID b94a6388cd639b841b2c37614f976a64 is already mapped to Assets/Scripts/ThirdParty/Utage/Editor. But the meta data wants it to be mapped to assets/utage/editor)
>これは移動後のUtageフォルダーのパス情報がどこかに残っているという事でしょうか。
はい。このエラーをみるのは初めてなのですが、一応Unityのファイル管理の簡単な説明をしますと。
Unityのファイルはパス以外にも.metaファイル内に書いてるGUIDという個別のIDで管理されています。
これは「GUID、b94a6388cd639b841b2c37614f976a64 はAssets/Scripts/ThirdParty/Utage/Editorで使われています。ですが、assets/utage/editorにインポートしようとするときに、そのGUID使おうとしています(既に使っているGUIDはもう使えません)」というエラーです。
通常はフォルダごと削除すればGUIDは消えるはずなのですが、なぜか「Assets/Scripts/ThirdParty/Utage/Editor」のGUIDが残ってしまっているようです。
エラーメッセージで調べてみたのですが、ちょっと対応方法がわかりません。
こちらからもUnityに問い合わせてみます。
 

#10

スタッフ 2015年12月18日

こちらで再現できないのと、解決策がわからないので、なんとも心もとないのですが
・フォルダを削除した後に、一度Unityを再起動してから、アセットストアからインポート
・それでもダメなら、再起動する時に、Assetsフォルダと同じ階層にあるLiblaryフォルダを削除してから起動してみる
(LiblaryフォルダにはUnityが自動的に生成するデータがあります。基本的には削除しても問題ないのですが、ウィンドウの位置やエディターウィンドウの一部の入力項目などはリセットされてしまう点をご注意ください)
 
というのを、バックアップをとってから試してみてください。

#11

スタッフ 2016年1月15日

こちらの件ですが、Unity側にも問い合わせてみたのですが、なんらかの原因でAssetDatabaseが破損しているということまでしかわからないようです。
なので、やはり上記の
・フォルダを削除した後に、一度Unityを再起動してから、アセットストアからインポート
・それでもダメなら、再起動する時に、Assetsフォルダと同じ階層にあるLiblaryフォルダを削除してから起動してみる
を試してみていただくのが、よいようです。
よろしくお願いいたします。

#12

この質問に答える


« »