# ShaderMaterial 再进行序列化存储的时候，出现存储不上的情况

**URL:** <https://forum.babylonjs.com/t/shadermaterial/53248>\
**Category:** Questions\
**Tags:** material, shaders\
**Created:** [September 6, 2024, 2:09am UTC](https://forum.babylonjs.com/t/shadermaterial/53248 "2024-09-06T02:09:26Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![zertaul](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/zertaul/32/37493_2.png) [@zertaul](https://forum.babylonjs.com/u/zertaul)\
**Post date:** [September 6, 2024, 2:09am UTC](https://forum.babylonjs.com/t/shadermaterial/53248/1 "2024-09-06T02:09:26Z")

</div>

如上文，我自定义的一个 shaderMaterial 再进行本地存储时，需要将场景文件进行序列化处理，结果存储后，本应该有的显示消失了，如果修改了参数后，对应的参数反而回出现 this.\_vector2(e).isArray 不是一个方法的错误。如图

 ![bug](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/3/8/38c2356fa2e83ff772fb1f37a0dd7d87863dafea.jpeg)  
有没有那位大佬遇到过这个问题，是不是再babylonjs里的 materials 里的 metadata 里不能存储东西？

---

<div class="post-metadata">

**Author:** ![hjlld](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/hjlld/32/978_2.png) [@hjlld](https://forum.babylonjs.com/u/hjlld)\
**Post date:** [September 6, 2024, 5:18am UTC](https://forum.babylonjs.com/t/shadermaterial/53248/2 "2024-09-06T05:18:03Z")

</div>

如果要在这里快速获得答案，最好把帖子翻译成英文，然后在 [Babylon.js Playground (babylonjs.com)](https://playground.babylonjs.com/) 创建一个 PG，写一个最小的示例代码体现你的问题，点上面保存，然后把网址发过来。

我随便找了个shaderMaterial，序列化然后Parse，没问题的。

better translate your post to English and create a PG at [Babylon.js Playground (babylonjs.com)](https://playground.babylonjs.com/)

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [September 6, 2024, 9:40am UTC](https://forum.babylonjs.com/t/shadermaterial/53248/3 "2024-09-06T09:40:34Z")

</div>

It would seem that you called `ShaderMaterial.setVector2` incorrectly. Make sure the second parameter you pass is a `BABYLON.Vector2 instance`.

---

<div class="post-metadata">

**Author:** ![zertaul](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/zertaul/32/37493_2.png) [@zertaul](https://forum.babylonjs.com/u/zertaul)\
**Post date:** [September 10, 2024, 3:30am UTC](https://forum.babylonjs.com/t/shadermaterial/53248/4 "2024-09-10T03:30:54Z")

</div>

好的，我知道了，我找到问题了，因为我的同事之前将vector2 的数据格式改成了自己定义的，每个数据都加了 undefined 判断，只有强转成 vector3 才不会报错

---

<div class="post-metadata">

**Author:** ![zertaul](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/zertaul/32/37493_2.png) [@zertaul](https://forum.babylonjs.com/u/zertaul)\
**Post date:** [September 10, 2024, 3:32am UTC](https://forum.babylonjs.com/t/shadermaterial/53248/5 "2024-09-10T03:32:47Z")

</div>

Thank you, I found the problem. My colleague created a custom data format for vector2 and added an undefined judgment, so it cannot be serialized. Converting it to standard vector2 will solve the problem
