Я пробовал Assetdatabase, а потом узнал, что он работает только в режиме редактора... Как я могу сохранить Mesh сейчас в режиме воспроизведения, а затем я также хочу загрузить его??
var savePath1 = "Assets/" + saveMaterial + ".asset";
if (AssetDatabase.LoadAssetAtPath(savePath1, typeof(Mesh))) {
AssetDatabase.DeleteAsset(savePath1);
AssetDatabase.CreateAsset(pf.mesh, savePath1);
//here pf is a reference of sphere(gameobject)
}
спасибо @derHugo, я знаю, как использовать Assetdatabse... я не знаю ни одного уже существующего метода для сохранения меша в игровом режиме... я немного обновляю свою проблему. на самом деле это означает, что он выдаст ошибку, когда я соберу его с помощью Assetdatabase.Create() в сценарии С#.
Итак, мне нужен метод или способ хранения сетки, чтобы я мог хранить и загружать сетку даже после сборки игры... [Надеюсь, теперь вы поняли проблему]
Кроме того, я искал много вопросов по этому поводу. Один из них, который я получил, заключался в том, буду ли я использовать Unity Resource.Load(), это поможет при загрузке данных ... но я до сих пор не знаю, как хранить.
Я знаю, какие методы существуют, но, пожалуйста, добавьте свой код ... Я не знаю, какие типы файлов/параметров вы туда передаете и как именно вы это использовать.
@derHugo добавил, и спасибо тоже
Сетка - это относительно простая структура, для одной подсетки вы можете довольно легко сериализовать в json или другой формат во время выполнения.
[System.Serializable]
public class MeshEquivalent
{
public Vector3[] vertices;
public Vector3[] normals;
public Vector2[] uv;
public int[] triangles;
public MeshEquivalent(Mesh mesh)
{
vertices = mesh.vertices;
uv = mesh.uv;
normals = mesh.normals;
triangles = mesh.triangles;
}
}
Есть также другие uv-каналы (которые вам могут не понадобиться), подсетки (те же самые) и границы, которые вы можете пересчитать. Противоположный процесс может быть использован для восстановления этой сетки.
Пожалуйста, добавьте код того, что вы пробовали до сих пор