Суббота, 23 Ноября 2024, 12:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
vova1227Дата: Воскресенье, 09 Мая 2021, 17:37 | Сообщение # 1 | Тема: Terrain и как с ним работать на мобильной платформе
был не раз
Сейчас нет на сайте
Карта, два террейна.
Far 600.
такая же отрисовка деревьев.(они в терейне)
Тестировал игру на разных телефонах.
На sm j730f слайдшоу. Графика там mali t830
В характеристиках чипа указано 4 шейдерных блока.
НО! без терейнов просадок нет.

Что я упустил и что так дико рендерится? Или это норма?

Мне сказали что терейн не подходит для мобильных игр, и посоветовали сменить на меш. И здесь мне кажется что не то.

Картинки вставил по конски, извините, но тег IMG не работает, они просто не отображаются по другому

https://drive.google.com/file/d/1B6_DZ4SMblDwxj3YXvyrGWNmbXSfzmPD/view

https://drive.google.com/file/d/1ycvYoeAbO_z9BCf1fY8ZMqGYWwuOrOhr/view

https://drive.google.com/file/d/1U4k4kkq8VS4IeinyM07mmbMdQ4Ubalfi/view

а последний с отключенными терейнами.

https://drive.google.com/file/d/146p87hFxc_TaAU_XOjgLi0vigvxle41Y/view


Сообщение отредактировал vova1227 - Воскресенье, 09 Мая 2021, 17:42
vova1227Дата: Среда, 05 Мая 2021, 20:13 | Сообщение # 2 | Тема: Движение игрока с платформой
был не раз
Сейчас нет на сайте
Вопрос почему выпадает и как? проваливается? Помните что если игрок становится дочерним то на него действуют родительские параметры, скейл и т.д.
если на плеере ригидбоди то можно прилепить fixedJoint к другому ригидбоди.

да и в конце концов, а что мешает поставить в update transform.position платформы = transform.position игрока, написать правда правельно надо. это так мысль просто вы хоть фото прилепите, а то не понятно, что за платформа, 2д или 3д, есть на ней колайдер или нету.


Сообщение отредактировал vova1227 - Среда, 05 Мая 2021, 20:17
vova1227Дата: Среда, 05 Мая 2021, 16:12 | Сообщение # 3 | Тема: Корутины, можна ли так делать?
был не раз
Сейчас нет на сайте
Я заменил Update корутиной с постоянным перезапуском 0.5 сек
Можна ли так делать и правельно ли это?
Я не уверен в yield break; По моему мнению он останавливает корутину, но зачем тогда StopCoroutine() нужен?
У меня перезапускается одна и та же корутина или плодятся новые экземпляры каждые 05 сек и существуют дальше в памяти?
Перечитал много разных статей, но конкретного ответа найти не смог.

Код

void Start
{
StartCoroutine(Man5Updator());
}

IEnumerator Man5Updator()
    {
        Man5Time = CubeResources.GetComponent<MyTimer>().GameMin;
        //STANDART
        if (transform.position != targetPos)
        {
            Man5Anim.SetBool("Walk", true);
            Man5Navi.SetDestination(targetPos);
        }
        else
        {
            Man5Anim.SetBool("Walk", false);
        }

yield return new WaitForSeconds(0.5f);
        RepCourMan5();
       yield break;
    }
    public void RepCourMan5()
    {
        StartCoroutine(Man5Updator());
    }
vova1227Дата: Четверг, 01 Апреля 2021, 23:59 | Сообщение # 4 | Тема: Вопрос-[ответ] по Unity
был не раз
Сейчас нет на сайте
Как сохранить привязку объекта к родительскому?
Допустим есть куб который привязан к контейнеру.
Я сохраню его позицию и воссоздам куб из префаба при старте игры.
Я понимаю что можно заново его привязать к родителю при создании.
Но я хочу как то сохранить данные о изначальной привязке, как это сделать?

Добавлено (16 Мая 2021, 10:00)
---------------------------------------------
Подскажите пожалуйста люди, из за чего это, фото прикладываю.
Блики и артефакты на персонажах.
Самое главное это только в билде есть, смотришь на персонажа а по нему вот такие штуки бликают типа как сетка прорезается.

Сделал 4 персонажа с mixamo fuse и в 2х вообще этого нет, во 2-м есть чуток , а в 3м вот жесть просто.

My WebPage

vova1227Дата: Четверг, 01 Апреля 2021, 20:47 | Сообщение # 5 | Тема: Десериализация
был не раз
Сейчас нет на сайте
я читал что можно дописывать данные в файл путем FileMode.Append.
Дописать в файл удалось, файл открыл блокнотом и Vector4 там значился, значит данные все таки в файле.
Но вот при возврате возникает ошибка.
При загрузке этого сохранения Unity показывает ошибку в строчке

Код
objectsT = (List<myVector4>)formatter.Deserialize(streamT);


InvalidCastException: Specified cast is not valid. SaveGameToM.LoadT () (at Assets / Script / SaveGameToM.cs: 111)

Что не верно?

Код
[System.Serializable]
    public struct myVector3
    {
        public float x, y, z;
    }
    [System.Serializable]
    public struct myVector4
    {
        public float j, k, l;
    }

    [SerializeField] public List<myVector3> ObjectsPositions = new List<myVector3>();
    [SerializeField] public List<myVector4> ObjectsPositionsT = new List<myVector4>();
    
    public void Start()
    {
        if (File.Exists(Application.persistentDataPath + "/saves/save.sav"))
        {
            BackMyCubes();
            BackMyTriangles();
        }
    }
    public void BackMyCubes()
    {
        ObjectsPositions = Load();
        foreach (var pos in ObjectsPositions)
        {
            GameObject i = Instantiate(Cube1Pref, new Vector3(pos.x, pos.y, pos.z), Quaternion.identity);
        }
        ObjectsPositions.Clear();
    }
    public void BackMyTriangles()
    {
        ObjectsPositionsT = LoadT();
        foreach (var posT in ObjectsPositionsT)
        {
            GameObject t = Instantiate(Triangle1Pref, new Vector4(posT.j, posT.k, posT.l), Quaternion.identity);
        }
        ObjectsPositionsT.Clear();
    }
    public void ManualSaving()
    {
        foreach (var obj in GameObject.FindGameObjectsWithTag("Cube1"))
        {
            myVector3 i = new myVector3();
            i.x = obj.transform.position.x;
            i.y = obj.transform.position.y;
            i.z = obj.transform.position.z;           
            ObjectsPositions.Add(i);
        }
        SaveCu(ObjectsPositions);
    }
    public void ManualSavingT()
    {
        foreach (var objT in GameObject.FindGameObjectsWithTag("Triangle1"))
        {
            myVector4 t = new myVector4();
            t.j = objT.transform.position.x;
            t.k = objT.transform.position.y;
            t.l = objT.transform.position.z;
            ObjectsPositionsT.Add(t);
        }
        SaveT(ObjectsPositionsT);
    }
    public List<myVector3> Load()
    {
        List<myVector3> objects;        
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream stream = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Open))
        {
            objects = (List<myVector3>)formatter.Deserialize(stream);
        }
        return objects;
    }
    public List<myVector4> LoadT()
    {
        List<myVector4> objectsT;
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream streamT = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Open))
        {
            objectsT = (List<myVector4>)formatter.Deserialize(streamT);
        }
        return objectsT;
    }
    void SaveCu(List<myVector3> positions)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream stream = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Create))
        {
            formatter.Serialize(stream, positions);
            stream.Close();
        }
        positions.Clear();
    }
    void SaveT(List<myVector4> positionsT)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream streamT = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Append))
        {
            formatter.Serialize(streamT, positionsT);
            streamT.Close();
        }
        positionsT.Clear();
    }
}
vova1227Дата: Четверг, 01 Апреля 2021, 15:31 | Сообщение # 6 | Тема: Сохранение rotatte position совместно с transform position
был не раз
Сейчас нет на сайте
Цитата Sanchez06 ()
Ну смотри, в структуру Level можно запихнуть хоть структуры трупов, хоть врагов, хоть кого. Так и ты можешь запихнуть и треугольники, и кубы, и что у тебя там еще будет.

В структурах я так и не разобрался, в данном случае это еще солоновато для меня. Но я читал что можно дописывать данные в файл путем FileMode.Append.
Дописать в файл удалось, файл открыл блокнотом и Vector4 там значился, значит данные все таки в файле.

Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using UnityEngine.UI;

public class SaveGameToM : MonoBehaviour
{
    public GameObject Cube1Pref;
    public GameObject Triangle1Pref;

    [System.Serializable]
    public struct myVector3
    {
        public float x, y, z;
    }

    [System.Serializable]
    public struct myVector4
    {
        public float j, k, l;
    }

    [SerializeField] public List<myVector3> ObjectsPositions = new List<myVector3>();
    [SerializeField] public List<myVector4> ObjectsPositionsT = new List<myVector4>();
    

    public void Start()
    {
        if (File.Exists(Application.persistentDataPath + "/saves/save.sav"))
        {
            BackMyCubes();
            BackMyTriangles();
        }
    }

    public void BackMyCubes()
    {
        ObjectsPositions = Load();

        foreach (var pos in ObjectsPositions)
        {
            GameObject i = Instantiate(Cube1Pref, new Vector3(pos.x, pos.y, pos.z), Quaternion.identity);
        }
        ObjectsPositions.Clear();
    }

    public void BackMyTriangles()
    {
        ObjectsPositionsT = LoadT();

        foreach (var posT in ObjectsPositionsT)
        {
            GameObject t = Instantiate(Triangle1Pref, new Vector4(posT.j, posT.k, posT.l), Quaternion.identity);
        }
        ObjectsPositionsT.Clear();
    }

    public void ManualSaving()
    {
        foreach (var obj in GameObject.FindGameObjectsWithTag("Cube1"))
        {
            myVector3 i = new myVector3();
            i.x = obj.transform.position.x;
            i.y = obj.transform.position.y;
            i.z = obj.transform.position.z;
           
            ObjectsPositions.Add(i);
        }
        SaveCu(ObjectsPositions);
    }

    public void ManualSavingT()
    {
        foreach (var objT in GameObject.FindGameObjectsWithTag("Triangle1"))
        {
            myVector4 t = new myVector4();
            t.j = objT.transform.position.x;
            t.k = objT.transform.position.y;
            t.l = objT.transform.position.z;

            ObjectsPositionsT.Add(t);
        }
        SaveT(ObjectsPositionsT);
    }

    public List<myVector3> Load()
    {
        List<myVector3> objects;
        
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream stream = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Open))
        {
            objects = (List<myVector3>)formatter.Deserialize(stream);
        }
        return objects;
    }

    public List<myVector4> LoadT()
    {
        List<myVector4> objectsT;
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream streamT = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Open))
        {
            objectsT = (List<myVector4>)formatter.Deserialize(streamT);
        }
        return objectsT;
    }

    void SaveCu(List<myVector3> positions)
    {

        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream stream = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Create))
        {
            formatter.Serialize(stream, positions);
            stream.Close();
        }
        positions.Clear();
    }

    void SaveT(List<myVector4> positionsT)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream streamT = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Append))
        {
            formatter.Serialize(streamT, positionsT);
            streamT.Close();
        }
        positionsT.Clear();

    }
}



Сделал во так и получил ошибку в Unity
Код
InvalidCastException: Specified cast is not valid. SaveGameToM.LoadT () (at Assets / Script / SaveGameToM.cs: 111)


Ошибка при десериализации? Что я упустил?


Сообщение отредактировал vova1227 - Четверг, 01 Апреля 2021, 17:12
vova1227Дата: Воскресенье, 21 Марта 2021, 06:21 | Сообщение # 7 | Тема: Необходимость в программировании
был не раз
Сейчас нет на сайте
" Что думаете, как будет с этим через десят лет"
Да ничего с этим не будет. Какой бы там конструктор не был он всегда будет ограничен. Тут самим языкам программирования гибкости не хватает, а в конструкторе и подавно нельзя будет полностью реализовать свои задумки. Будут делать упоротые клоны одного и того же проекта ибо в конструкторе есть такой вот набор, сейчас и так выбора хороших игр почти нет.
vova1227Дата: Суббота, 20 Марта 2021, 21:17 | Сообщение # 8 | Тема: Как подписать приложение сертификатом гугла
был не раз
Сейчас нет на сайте
Народ помогите кто знает как это делать. Я по незнанию согласился в плейконсоли на подпись сертификатом гугл. Как и что с этим делать я теперь вообще понять не могу.
-Приложение создано на Unity и в нем создан обычный ключ keystore.
- При публикации мне предложили подписывать ключом от гугла, я согласился.
- мне выдали два сертификата которые я могу скачивать
сертификат ключа подписи
сертификат ключа загрузки
-приложение сейчас на проверке, я так понимаю удалить и отказаться от ключа гугл я уже не могу.
Но что мне делать с этими сертификатами и какой ключ сделать теперь и как сделать и куда его загружать я вообще не понимаю. Или это какой то ключ гугла, но откуда его скачать тогда?
Читал инструкции гугла, там вообще ничего не понятно.
vova1227Дата: Суббота, 06 Марта 2021, 14:57 | Сообщение # 9 | Тема: Сохранение rotatte position совместно с transform position
был не раз
Сейчас нет на сайте
Код

public Dictionary<string, Level> levels = new Dictionary<string, Level>();
public struct Corpse
{
    public string type;
    public int x;
    public int y;
}

[System.Serializable]
public struct Point
{
    public float X;
    public float Y;
    public float Z;
    public Point(float x, float y, float z)
    {
        X = x;
        Y = y;
        Z = z;
    }
}
[System.Serializable]
public struct Enemy
{
    public string type;
    public Point pos;
    public Point rot;
    public int hp;
    public AI_cult_1.State state;
    public int ammo;
    public bool vis;
}

[System.Serializable]
public struct Decoration
{
    public string type;
    public Point pos;
    public Point rot;
}

[System.Serializable]
public struct Level
{
    public List<Corpse> corpses;
    public List<Enemy> enemies;
    public List<Decoration> decorations;


Это структуры в массиве если я правильно понял.

Код

Level lvl = new Level();

        lvl.decorations = GetAllDecor();//берем все декорации на сцене
        lvl.enemies = GetAllEnemies();//находим всех противников на сцене
        
        if (!levels.ContainsKey(SceneManager.GetActiveScene().name)) //если нет уровня в дикте
        {levels.Add(SceneManager.GetActiveScene().name,lvl);}        //то создадим его
        else
        {levels[SceneManager.GetActiveScene().name]=lvl;} //а если есть - перезапишем

    public List<Decoration> GetAllDecor()
    {
        List<Decoration> lol = new List<Decoration>();
        GameObject[] decors = GameObject.FindGameObjectsWithTag("Decoration");
        foreach (GameObject decor in decors)
        {
            Decoration a = new Decoration();
            a.type = decor.name;
            a.pos = new Point(decor.transform.position.x,decor.transform.position.y,decor.transform.position.z);
            a.rot = new Point(decor.transform.eulerAngles.x,decor.transform.eulerAngles.y,decor.transform.eulerAngles.z);
            lol.Add(a);
        }
        
        return lol;

    }

    public List<Enemy> GetAllEnemies()
    {
        List<Enemy> lol = new List<Enemy>();
        AI_cult_1[] enemies_on_scene = Object.FindObjectsOfType<AI_cult_1>();
        foreach (AI_cult_1 enemy in enemies_on_scene)
        {
            Enemy a = new Enemy();
            a.type = enemy.name;
            a.pos = new Point(enemy.transform.position.x,enemy.transform.position.y,enemy.transform.position.z);
            a.rot = new Point(enemy.transform.eulerAngles.x,enemy.transform.eulerAngles.y,enemy.transform.eulerAngles.z);
            a.ammo = enemy.countAmmo;
            a.hp = enemy.hp;
            a.state = enemy.state;
            a.vis = enemy.vis;
            lol.Add(a);
        }


левел это 2я сцена в юнити?

Ты говоришь о структурах сложенных в массив или?
vova1227Дата: Суббота, 06 Марта 2021, 14:25 | Сообщение # 10 | Тема: Сохранение rotatte position совместно с transform position
был не раз
Сейчас нет на сайте
Спасибо, все заработало на ура, все восстановилось с поворотами.
Я вот только думаю, а правильно ли я делаю что для каждого объекта создаю отдельный save.sav файл. Они как то совмещаются или лучше не надо?
Дело в том что обектов будет много, не только там кубики и треугольники.
vova1227Дата: Суббота, 06 Марта 2021, 13:19 | Сообщение # 11 | Тема: Сохранение rotatte position совместно с transform position
был не раз
Сейчас нет на сайте
Цитата Sanchez06 ()
Да и код в теги code добавить


За это прошу прощение, я ночью писал, уже голова не варила просто.

Спасибо за помощь, интересно о чем человек вот еще написал, что такое Vector4 (w), сейчас пойду рыть, так как поворот именно треугольника реально одной оси.

Добавлено (06 Марта 2021, 13:44)
---------------------------------------------
PS/
Пробовал отредактировать сообщение, что то не врубаю как теги [/code][code] работают
Вроде добавил и так и ся ниче не поменялось

vova1227Дата: Суббота, 06 Марта 2021, 07:02 | Сообщение # 12 | Тема: Сохранение rotatte position совместно с transform position
был не раз
Сейчас нет на сайте
Вопрос собственно в чем:
1.Сохранил я треугольник к примеру, по Vector3. Но поворот то треугольника не сохранился в массив, при восстановлении всех треугольников они восстановятся в положении префаба.
А как rotate position сохранить ихние? В Vector 3 только 3 переменные. Если в отдельный массив, то как тогда при восстановлении они выберут координаты?
2. Неужели все так делают и нет способа упростить сохранение, ну это же мракобесие для каждого объекта дописывать код и поиск по тегу.
Код

System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using UnityEngine.UI;

public class SaveGameToM : MonoBehaviour
{

public GameObject Cube1Pref;
public GameObject Triangle1Pref;

[System.Serializable]
public struct myVector3
{
public float x, y, z;
}

[System.Serializable]
public struct myVector4
{
public float j, k, l;
}

[SerializeField] public List<myVector3> ObjectsPositions = new List<myVector3>();

[SerializeField] public List<myVector4> ObjectsPositionsT = new List<myVector4>();

public void Awake()
{
if (!File.Exists(Application.persistentDataPath + "saves"))

{
Directory.CreateDirectory(Application.persistentDataPath + "/saves");
}
}

public void Start()
{

if (File.Exists(Application.persistentDataPath + "/saves/save.sav")& File.Exists(Application.persistentDataPath + "/saves/saveT.sav"))
{
BackMyCubes();
BackMyTriangles();
}

}

public void BackMyCubes()
{
ObjectsPositions = Load();

foreach (var pos in ObjectsPositions)
{
Instantiate(Cube1Pref, new Vector3(pos.x, pos.y, pos.z), Quaternion.identity);
}
ObjectsPositions.Clear();
}

public void BackMyTriangles()
{//n
ObjectsPositionsT = LoadT();

foreach (var posT in ObjectsPositionsT)//n
{//n
Instantiate(Triangle1Pref, new Vector3(posT.j, posT.k, posT.l), Quaternion.Euler(-90f,0.0f,0.0f));//n
}//n
ObjectsPositionsT.Clear();//n
}//n

public void ManualSaving()
{
if (File.Exists(Application.persistentDataPath + "/saves/save.sav"))
{
File.Delete(Application.persistentDataPath + "/saves/save.sav");
}

foreach (var obj in GameObject.FindGameObjectsWithTag("Cube1"))

{
myVector3 i = new myVector3();
i.x = obj.transform.position.x;
i.y = obj.transform.position.y;
i.z = obj.transform.position.z;

ObjectsPositions.Add(i);
}

Save(ObjectsPositions);
}

public void ManualSavingT()//n
{//n
if (File.Exists(Application.persistentDataPath + "/saves/saveT.sav"))//n
{//n
File.Delete(Application.persistentDataPath + "/saves/saveT.sav");//n
}//n

foreach (var objT in GameObject.FindGameObjectsWithTag("Triangle1"))//n

{//n
myVector4 t = new myVector4();//n
t.j = objT.transform.position.x;//n
t.k = objT.transform.position.y;//n
t.l = objT.transform.position.z;//n
ObjectsPositionsT.Add(t);//n
//сюда дописать ротат поз с другими буквами

}//n

Save(ObjectsPositionsT);//n
}//n

public List<myVector3> Load()
{
List<myVector3> objects;
BinaryFormatter formatter = new BinaryFormatter();

using (FileStream stream = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Open))
{
objects = (List<myVector3>)formatter.Deserialize(stream);
}

return objects;

}

public List<myVector4> LoadT()//n
{//n
List<myVector4> objectsT;//n
BinaryFormatter formatter = new BinaryFormatter();//n

using (FileStream streamT = new FileStream(Application.persistentDataPath + "/saves/saveT.sav", FileMode.Open))//n
{//n
objectsT = (List<myVector4>)formatter.Deserialize(streamT);//n
}//n

return objectsT;//n

}//n

void Save(List<myVector3> positions)
{

BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream(Application.persistentDataPath + "/saves/save.sav", FileMode.Create))
{
formatter.Serialize(stream, positions);
stream.Close();
}
positions.Clear();

}

void Save(List<myVector4> positionsT)//n
{//n

BinaryFormatter formatter = new BinaryFormatter();//n
using (FileStream streamT = new FileStream(Application.persistentDataPath + "/saves/saveT.sav", FileMode.Create))//n
{
formatter.Serialize(streamT, positionsT);//n
streamT.Close();//n
}
positionsT.Clear();//n

}//

}


Сообщение отредактировал vova1227 - Суббота, 06 Марта 2021, 14:22
vova1227Дата: Пятница, 05 Марта 2021, 20:32 | Сообщение # 13 | Тема: Как сделать систему пред просмотра до установки обекта?
был не раз
Сейчас нет на сайте
Ладно, вопрос решен другим образом,
if (Physics.Raycast(ray, out hit, 4.0f) && hit.collider.tag == "Cube1")
{

Vector3 pos = hit.collider.transform.position;
pos += hit.normal;


hit.collider.gameObject.transform.Rotate(0, 90, 0);

Я тут подумал что менее затратно для производительности изменить поворот уже установленного объекта, ведь это мобильная игра, да и вряд ли будет удобно таскать персонажа джойстиком еще и с этим объектом висящим спереди.
Если что то не правильно то напишите что пожалуйста. На вид вроде все поворачивает как надо.
vova1227Дата: Пятница, 05 Марта 2021, 18:06 | Сообщение # 14 | Тема: Как сделать систему пред просмотра до установки обекта?
был не раз
Сейчас нет на сайте
Народ, меня интересует по какому принципу делается пред просмотр устанавливаемого элемента. Вот к примеру вы в игре устанавливаете какую то модель в определенную точку. Но с момента как вы ее выбрали и до момента как вы ее создали эта модель висит у игрока типа в руках и вы можете менять ее расположение или вращать по оси или же вообще ходить с ней в руках.
Какие есть методы реализации такой вот штуки? Как это вообще делается?
vova1227Дата: Пятница, 05 Марта 2021, 17:53 | Сообщение # 15 | Тема: Вопрос-[ответ] по Unity
был не раз
Сейчас нет на сайте
Unity
Бесплатный для некоммерческого использования. Чего то я не понял, как это не коммерческого? То есть я не могу продавать игру сделанную на Unity Или что то я не понял?
vova1227Дата: Среда, 03 Марта 2021, 15:57 | Сообщение # 16 | Тема: Помогите доделать сохранение
был не раз
Сейчас нет на сайте
Цитата Sanchez06 ()
И загрузка:


Спасибо тебе большое человек, я до социализации еще не дошел, она пока что в черновике написана, я на придаче в массив как застопорился так и целый день убил на чтение всего что только можно.
vova1227Дата: Среда, 03 Марта 2021, 02:01 | Сообщение # 17 | Тема: Помогите доделать сохранение
был не раз
Сейчас нет на сайте
Подскажите пожалуйста, что надо исправить, и как завершить данный кусок кода.
Это то что мне удалось найти и дополнить а так же поправить, но я не до конца уверен в правильности синтаксиса и еще некоторые моменты:

ObjectsPositions.Add(obj); //компилятор ругается
obj не удается преобразовать из GameObject в SaveGameToM.myVector3

_______________________

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

public class SaveGameToM : MonoBehaviour
{


public GameObject Cube1Pref;

public struct myVector3
{
public float x, y, z;
}

[SerializeField]
public List<myVector3> ObjectsPositions = new List<myVector3>();

public void Start()
{
ObjectsPositions = Load();

foreach (var pos in ObjectsPositions)
{
Instantiate(Cube1Pref, new Vector3(pos.x, pos.y, pos.z), Quaternion.identity);
}
}

public void OnApplicationQuit()
{
foreach (var obj in GameObject.FindGameObjectsWithTag("Cube1"))

{
ObjectsPositions.Add(obj);
}

Save(ObjectsPositions);
}
//Сериализовывать эту структурыв JSON или BinarySerialize.

void List<myVector3>Load()
{



return;
// [десериализуем оттуда, куда сериализуем в методе Save]
}

void Save(List<myVector3> positions)
{

// [сериализуем positions
}
vova1227Дата: Вторник, 02 Марта 2021, 23:10 | Сообщение # 18 | Тема: Как сделать сохранения
был не раз
Сейчас нет на сайте
Спасибо конечно но это достаточно сложно пока что для меня. Я всего то хочу сохранить один тип объектов.
vova1227Дата: Вторник, 02 Марта 2021, 04:05 | Сообщение # 19 | Тема: Как сделать сохранения
был не раз
Сейчас нет на сайте
Вопрос лично для меня еще сложный, прошу помощи.
1.Есть персонаж создающий объекты в сцене по средству Instantiate.
2. Приложение будет для мобильных устройств, насколько я понял там есть разница в методах сохранения, еще не очень понял в чем именно, но как бы в социализации. Хотя для начала мне хоть как то сохранить прогресс игры.
3. Документацию читал, но вывести из этого результат не видев ни одного примера мне сложно.
4. Я думаю что надо как то так:
-Создать динамический массив
-Собрать местоположение объектов которые созданы с момента чего то, или записывать сразу при их создании, или записывать все объекты которые в сцене при OnSceneExit, и вот тут тоже не придумал еще как именно потом отделить данные новых объектов от тех которые уже сохранены.
-Как то передать это в массив.
-Перевести массив в какой то вид сохранения.
-При загрузке игры в старт вписать функцию instantiate которая на основе координат из массива создаст объекты на тех же координатах.

Кто что подскажет мне, как это реализовать и что вообще с этим делать, возможно уже есть способы
это сделать или варианты другие. Я не нашел ни одного годного решения пока что.

Картинка с тестовой локации, что б было более понятно. Хотя бы как заспавненые кубик сохранять для начала.

https://ibb.co/xYQfX8c
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг