Unity 2018.3から、プレハブのワークフローが新しくなりました。
SS6Player for Unity(以降SS6PU) Ver.1.1.9から新しいプレハブのワークフローに対応しました。
ただし、その際に下記の重要な注意点があります。
下記をご通読・ご理解の上、極力、Unityのバージョン及びプロジェクトの状態との整合を取る形で更新していただけますようお願いいたします。
※このIssueの中においては記載上の都合上、Unity2018.3からの新しくなったワークフローのプレハブ
を「新形式」・Unity2018.2以前からの従来のワークフローのプレハブを「旧形式」と(便宜的に)呼称しています。正確には、新形式は「Unity2018.3の新しくなったワークフローに対応実装されたプレハブ作成関数を使用(して作られたプレハブ)」・旧形式は「Unity2018.2以前の旧来のプレハブ作成関数を使用(して作られたプレハブ)」という意味となります。
Unity2017.x~Unity2018.2でご使用の場合
Unity2018.2以前のバージョンでSS6PU Ver.1.1.9以降を使用する場合、SS6PUでインポートしたデータのプレハブは旧形式で格納されます。
SS6PUがVer.1.1.6以前の場合も、旧形式で格納されます。
※一度Unity2018.3以降のバージョンに変換したプロジェクトを、Unity2018.2以前で再度読み込もうとすると、プロジェクトの内容に問題が発生する場合があります。できる限りそのようなことは行わないでください(行う可能性がある場合、必ず最初の2018.2以前のプロジェクトをバックアップして保全し・ロールバックできるようにしておいてください)。
Unity2018.3でご使用の場合
Unity2018.3系でSS6PU Ver.1.1.9以降を使用する場合、SS6PUでインポートしたデータのプレハブは旧形式で格納されます。
SS6PUがVer.1.1.6以前の場合も、旧形式で格納されます。
また、2018.3環境ではスクリプトのコンパイル時に
warning CS0618: 'PrefabUtility.XXXX' is obsolete: 'Use SaveAsPrefabAsset or SaveAsPrefabAssetAndConnect with a path instead.
という内容の警告(Warning)が出力されますが、こちらは仕様となります(原則、警告を出さないようにすることはできません)。
※Unity2018.3系では新形式のプレハブで格納せず・旧形式での格納関数を使用しているため、この警告が出ます。詳細は別項に後述してあります。
Unity2018.4以降でご使用の場合
Unity2018.4以降のバージョンでSS6PU Ver.1.1.9以降を使用する場合、SS6PUでインポートしたデータのプレハブは新形式で格納されます。
SS6PUがVer.1.1.6以前の場合は、旧形式で格納されます。
※2019/6/1 追記
最初のVer.1.1.9への対処では、Unity2019.xで上記挙動にならずに旧形式で格納されてしまう場合がありました(その場合、Unity2018.3の場合と同様にObsoleteの警告がコンソールに表示されます)。
分岐コンパイルの判定を見直したバージョンを、Ver.1.1.9(b)バージョンとして、master / develop / sampleDevelopの各ブランチにコミット&pushしてあります。
お手元のUnityの上部メニューの[Tools]-[SpriteStudio6]-[About]でバージョンをご確認いただき、「Ver.1.1.9」と(bでないバージョンが表示された場合、再度ご希望のブランチをpullしていただけますようお願いいたします)。
具体的には「#if UNITY_2018_4_OR_NEWER」で分岐コンパイル判定していた箇所を「#if UNITY_2018_4_OR_NEWER || UNITY_2019_1_OR_NEWER」に変更しただけです。
Unity2018.3系の時に旧形式のプレハブで格納している理由について
Unity2018.3上でSS6PU Ver.1.1.9を使用して新形式のプレハブでの格納を行った場合、Unity2018.3のマイナーバージョンによっては下記の障害が発生することが(当方にて)確認されているため、Unity2018.3の全てのバージョンでは旧形式プレハブで格納しています。
※プロジェクトは、Unity2018.2以前で作られたものをUnity2018.3に更新した前提です。
これらの事象は(アプリケーションの)プロジェクトの破壊に直結しかねないため、できるだけ現出を避けてプロジェクト運用上の安全性を担保しようとしたことから、Unity2018.3への新形式プレハブでの格納を回避した次第です。
上記の障害が、当方で確認できた範囲では、
- Unity2018.3.0~Unity2018.3.7では起こる
- Unity2018.3.14では起こらない(と思われる)
となっております。
※Unity2018.3.8~Unity2018.3.13での各バージョン間での詳細状況は不明です。
そのため、Unity2018.3.14では(SS6PU Ver.1.1.9以降においては)新形式のプレハブ対応処理を用いても問題はないとは思われるのですが、上記にあるように(念のため)Unity2018.3全域で旧形式を用いるようにしています。
これは現時点での仕様動作とします。
Unity2018.3.14(または他のUnity2018.3系バージョン)下で新形式を使用し・表示される警告を消したいような場合、自己責任で変更を行ってください(変更とその結果にまつわる一切のサポートを含んだ責任を負いかねます)。
※一応、SS6PUのアセット格納フォルダのEditorフォルダ内を「UNITY_2018_4_OR_NEWER」を検索してコンパイル条件を変更することで変更すること自体は可能ではあります。
※逆説的に、Unity2018.4以降かつSS6PU Ver.1.1.9以降でも旧形式で格納するように変更することも可能ですが、Obsoleteでの警告なので遠くない将来に旧形式自体が実装削除される可能性をはらんでいることに留意してください(こちらの場合についても自己責任とさせていただきます)。
以上となります。
これらの仕様をご考慮の上、ご使用のUnity及びSS6PUのバージョンとを調整いただけますようお願いいたします。
Unity 2018.3から、プレハブのワークフローが新しくなりました。
SS6Player for Unity(以降SS6PU) Ver.1.1.9から新しいプレハブのワークフローに対応しました。
ただし、その際に下記の重要な注意点があります。
下記をご通読・ご理解の上、極力、Unityのバージョン及びプロジェクトの状態との整合を取る形で更新していただけますようお願いいたします。
※このIssueの中においては記載上の都合上、Unity2018.3からの新しくなったワークフローのプレハブ
を「新形式」・Unity2018.2以前からの従来のワークフローのプレハブを「旧形式」と(便宜的に)呼称しています。正確には、新形式は「Unity2018.3の新しくなったワークフローに対応実装されたプレハブ作成関数を使用(して作られたプレハブ)」・旧形式は「Unity2018.2以前の旧来のプレハブ作成関数を使用(して作られたプレハブ)」という意味となります。
Unity2017.x~Unity2018.2でご使用の場合
Unity2018.2以前のバージョンでSS6PU Ver.1.1.9以降を使用する場合、SS6PUでインポートしたデータのプレハブは旧形式で格納されます。
SS6PUがVer.1.1.6以前の場合も、旧形式で格納されます。
※一度Unity2018.3以降のバージョンに変換したプロジェクトを、Unity2018.2以前で再度読み込もうとすると、プロジェクトの内容に問題が発生する場合があります。できる限りそのようなことは行わないでください(行う可能性がある場合、必ず最初の2018.2以前のプロジェクトをバックアップして保全し・ロールバックできるようにしておいてください)。
Unity2018.3でご使用の場合
Unity2018.3系でSS6PU Ver.1.1.9以降を使用する場合、SS6PUでインポートしたデータのプレハブは旧形式で格納されます。
SS6PUがVer.1.1.6以前の場合も、旧形式で格納されます。
また、2018.3環境ではスクリプトのコンパイル時に
という内容の警告(Warning)が出力されますが、こちらは仕様となります(原則、警告を出さないようにすることはできません)。
※Unity2018.3系では新形式のプレハブで格納せず・旧形式での格納関数を使用しているため、この警告が出ます。詳細は別項に後述してあります。
Unity2018.4以降でご使用の場合
Unity2018.4以降のバージョンでSS6PU Ver.1.1.9以降を使用する場合、SS6PUでインポートしたデータのプレハブは新形式で格納されます。
SS6PUがVer.1.1.6以前の場合は、旧形式で格納されます。
※2019/6/1 追記
最初のVer.1.1.9への対処では、Unity2019.xで上記挙動にならずに旧形式で格納されてしまう場合がありました(その場合、Unity2018.3の場合と同様にObsoleteの警告がコンソールに表示されます)。
分岐コンパイルの判定を見直したバージョンを、Ver.1.1.9(b)バージョンとして、master / develop / sampleDevelopの各ブランチにコミット&pushしてあります。
お手元のUnityの上部メニューの[Tools]-[SpriteStudio6]-[About]でバージョンをご確認いただき、「Ver.1.1.9」と(bでないバージョンが表示された場合、再度ご希望のブランチをpullしていただけますようお願いいたします)。
具体的には「#if UNITY_2018_4_OR_NEWER」で分岐コンパイル判定していた箇所を「#if UNITY_2018_4_OR_NEWER || UNITY_2019_1_OR_NEWER」に変更しただけです。
Unity2018.3系の時に旧形式のプレハブで格納している理由について
Unity2018.3上でSS6PU Ver.1.1.9を使用して新形式のプレハブでの格納を行った場合、Unity2018.3のマイナーバージョンによっては下記の障害が発生することが(当方にて)確認されているため、Unity2018.3の全てのバージョンでは旧形式プレハブで格納しています。
※プロジェクトは、Unity2018.2以前で作られたものをUnity2018.3に更新した前提です。
2018.2以前でインポートしたプレハブに更新(上書き)再インポートを行うと、シーン上のプレハブの各インスタンスの状態や構成、及びそれらへの参照が破壊される場合がある。
2018.3以降の新形式でインポートしたプレハブに更新(上書き)再インポートを行うと、シーン上で各インスタンスに設定した値などが、プレハブのデフォルト値に書き戻されてしまう場合がある。
これらの事象は(アプリケーションの)プロジェクトの破壊に直結しかねないため、できるだけ現出を避けてプロジェクト運用上の安全性を担保しようとしたことから、Unity2018.3への新形式プレハブでの格納を回避した次第です。
上記の障害が、当方で確認できた範囲では、
となっております。
※Unity2018.3.8~Unity2018.3.13での各バージョン間での詳細状況は不明です。
そのため、Unity2018.3.14では(SS6PU Ver.1.1.9以降においては)新形式のプレハブ対応処理を用いても問題はないとは思われるのですが、上記にあるように(念のため)Unity2018.3全域で旧形式を用いるようにしています。
これは現時点での仕様動作とします。
Unity2018.3.14(または他のUnity2018.3系バージョン)下で新形式を使用し・表示される警告を消したいような場合、自己責任で変更を行ってください(変更とその結果にまつわる一切のサポートを含んだ責任を負いかねます)。
※一応、SS6PUのアセット格納フォルダのEditorフォルダ内を「UNITY_2018_4_OR_NEWER」を検索してコンパイル条件を変更することで変更すること自体は可能ではあります。
※逆説的に、Unity2018.4以降かつSS6PU Ver.1.1.9以降でも旧形式で格納するように変更することも可能ですが、Obsoleteでの警告なので遠くない将来に旧形式自体が実装削除される可能性をはらんでいることに留意してください(こちらの場合についても自己責任とさせていただきます)。
以上となります。
これらの仕様をご考慮の上、ご使用のUnity及びSS6PUのバージョンとを調整いただけますようお願いいたします。