Open halfwele opened 8 years ago
halfwele様
お世話になっております。 レポートありがとうございます。 頂いた件について、調査いたします。 ※初見印象として、ビルド後の実行状態の中にシェーダが未格納になってしまっており・シェーダを見失っているために起こっている現象かと思われます。
取り急ぎ、未検証で申し訳ございませんが、 Script_SpriteStudio_Root.csに下記追記をしてみていただけませんでしょうか? (SS5PU Ver.1.2系の初期化処理の一部をコピーしてきたままではありますが)
void Awake()
{
var root = gameObject.GetComponent<Script_SpriteStudio_Root>();
foreach(var MaterialNow in root.TableMaterial)
{
MaterialNow.shader = Shader.Find(MaterialNow.shader.name);
}
}
※SS5PUの1.3系では、上記スクリプトのAwakeは、最新版でもオーバーライドしていない状態になっております(オーバーライドでの空関数記述を注釈化してあるはずです)。
また、Unityのプロジェクト上で[Edit]-[Project Setting]-[Graphic]の中の 「Always Included Shaders」に、 ・Sprite_SpriteStudio_Mix/Add/Sub/Mul ・Particle_SpriteStudio_Mix/Add/Add2 の7つのシェーダを含めてみて下さい。 ※「Shader Preloading」の中にも加えていただけますと、さらに安全かと思われます。
GitHubへのバージョンアップなどは詳細検証の後に、アップデートいたします。
お忙しい中お手数とは存じますが、何卒ご検討下さいますと幸いです。
お返事ありがとうございます。
void Awake()
{
var root = gameObject.GetComponent
halfwele様
ご検証とご報告有難うございます。 正常に動作されたようで安堵しております。 また、未検証状態での対処案で大変申し訳ございませんでした。
一応当方でも検証後、上記変更を正式に記載したものをVer.1.3.12として、developブランチにアップいたしました。
具体的な変更点としては、 Script_SpriteStudio_Root.csとScript_SpriteStudio_RootEffect.csに
void Awake()
{
foreach(Material MaterialNow in TableMaterial)
{
MaterialNow.shader = Shader.Find(MaterialNow.shader.name);
}
}
の記述を追記した形となっています。
何卒今後とも宜しくお願い致します。
お世話になっております。 AssetBundle化してInstantiateしますとBased-Material Table内のShaderの参照が壊れてしまいます。 (MIX~MUL内のParameter類は全て0の表示になっております。) ShaderのCustom/SpriteStudio5/Mix~MULを設定しなおすと正しく表示されます。 v1.2系では同じ方法で問題なく動作していた為悩んでおります。 お手数ですが、どうぞよろしくお願いいたします。
【環境】 BuildAssetBundleOptionsは以下の2種類を使用しましたがいずれも同じ結果です。 BuildAssetBundleOptions.DeterministicAssetBundle; [Edit]-[Project Settings]-[Graphics]内の「Always Included Shaders」に「SpriteSpriteStudio〜.shader」のシェーダは定義済みです。 import時のNaming Assetsも試しました。 Unity 5.3.4を使用しています。
左側のピンクがAssetBundleからInstantiateした状態です。
![sprite2](https://cloud.githubusercontent.com/assets/19235759/15090915/07386794-1473-11e6-9e71-162d3cc0545b.png)