Простая сохранялка - Страница 3 - Форум Игроделов
Вт, 04 Фев 2025, 02:00 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Простая сохранялка
proektEKДата: Вт, 07 Сен 2010, 18:17 | Сообщение # 41
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Приведу пример, хотя я не прогер

Code
GameObject[], Object[], //значок [] обозначает массив, то есть список.
var chuvaki:GameObject[]=GameObject.FindGameObjectsWithTag ("Vrag");

Здесь chuvaki это список всех объектов с тегом Vrag
Чтобы получить этот список а так же свойства объектов в нем делаем вот так
Code
for(var g:GameObject in chuvaki)
{
print(g.name);
print(g.transform.position.x);
}

или так
Code
chuvaki.name[номер объекта];


Сообщение отредактировал Dekterev - Чт, 01 Дек 2011, 21:10
 
СообщениеПриведу пример, хотя я не прогер

Code
GameObject[], Object[], //значок [] обозначает массив, то есть список.
var chuvaki:GameObject[]=GameObject.FindGameObjectsWithTag ("Vrag");

Здесь chuvaki это список всех объектов с тегом Vrag
Чтобы получить этот список а так же свойства объектов в нем делаем вот так
Code
for(var g:GameObject in chuvaki)
{
print(g.name);
print(g.transform.position.x);
}

или так
Code
chuvaki.name[номер объекта];

Автор - proektEK
Дата добавления - 07 Сен 2010 в 18:17
ЛевшаДата: Вт, 07 Сен 2010, 18:40 | Сообщение # 42
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
И в чем тут проблема? ты практически уже вставил массив в скрипт...

X.cor.R (Prologue)
 
СообщениеИ в чем тут проблема? ты практически уже вставил массив в скрипт...

Автор - Левша
Дата добавления - 07 Сен 2010 в 18:40
proektEKДата: Вт, 07 Сен 2010, 18:49 | Сообщение # 43
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Дело в том что таким способом сохранится лишь последний объект из списка, ладно буду разбираться дальше. Левша не забивай голову, я может туплю и все проще простого.
 
СообщениеДело в том что таким способом сохранится лишь последний объект из списка, ладно буду разбираться дальше. Левша не забивай голову, я может туплю и все проще простого.

Автор - proektEK
Дата добавления - 07 Сен 2010 в 18:49
ЛевшаДата: Вт, 07 Сен 2010, 18:58 | Сообщение # 44
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Quote (proektEK)
и все проще простого.

Надеюсь, потому что мне скоро придеться тоже этим вопросом заняться...
И все таки интуитивно чую, что надо другим путем идти, стандартные как правило замороченные слишком...


X.cor.R (Prologue)
 
Сообщение
Quote (proektEK)
и все проще простого.

Надеюсь, потому что мне скоро придеться тоже этим вопросом заняться...
И все таки интуитивно чую, что надо другим путем идти, стандартные как правило замороченные слишком...

Автор - Левша
Дата добавления - 07 Сен 2010 в 18:58
proektEKДата: Вт, 07 Сен 2010, 19:16 | Сообщение # 45
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Quote (Левша)
И все таки интуитивно чую, что надо другим путем идти, стандартные как правило замороченные слишком...

Скорее всего так и есть.
Сейчас разбираю систему SAVE AND LOAD BINARY
 
Сообщение
Quote (Левша)
И все таки интуитивно чую, что надо другим путем идти, стандартные как правило замороченные слишком...

Скорее всего так и есть.
Сейчас разбираю систему SAVE AND LOAD BINARY

Автор - proektEK
Дата добавления - 07 Сен 2010 в 19:16
СкептикДата: Вт, 07 Сен 2010, 19:39 | Сообщение # 46
Мыслитель
 
Сообщений: 5860
Награды: 48
Репутация: 1731
Статус: Offline
Я где-то видел скрипт перебора. Можно многократно изменять имя переменной, а затем из полученных собрать массив.

Фанат игр Max Payne и Fahrenheit.
 
СообщениеЯ где-то видел скрипт перебора. Можно многократно изменять имя переменной, а затем из полученных собрать массив.

Автор - Скептик
Дата добавления - 07 Сен 2010 в 19:39
proektEKДата: Чт, 09 Сен 2010, 22:42 | Сообщение # 47
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Quote (proektEK)
Сейчас разбираю систему SAVE AND LOAD BINARY

Вроде разобрался, теперь выбранные мной объекты сохраняются, а вернее их позиции. Завтра выложу демку, единственный минус скрипты на C#. Теперь в планах добиться получать переменные у объектов и сохранять их.
 
Сообщение
Quote (proektEK)
Сейчас разбираю систему SAVE AND LOAD BINARY

Вроде разобрался, теперь выбранные мной объекты сохраняются, а вернее их позиции. Завтра выложу демку, единственный минус скрипты на C#. Теперь в планах добиться получать переменные у объектов и сохранять их.

Автор - proektEK
Дата добавления - 09 Сен 2010 в 22:42
ЛевшаДата: Чт, 09 Сен 2010, 23:05 | Сообщение # 48
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Quote (proektEK)
Теперь в планах добиться получать переменные у объектов и сохранять их.

А если на каждый обьект повесить еще по стандартному скриптику? В котором будут собраны все необходимые переменные и их значения, которые постоянно будут обновляться до их последнего значения.
Все переменные сделать общедоступными и перед сейвом их считать, а после загрузки им же вернуть. В принципе каждый обьект нам и не нужен, нужны лишь изменяемые, ключевые обьекты, а их в игре не так уж и много. Статике это нафиг не нужно.


X.cor.R (Prologue)
 
Сообщение
Quote (proektEK)
Теперь в планах добиться получать переменные у объектов и сохранять их.

А если на каждый обьект повесить еще по стандартному скриптику? В котором будут собраны все необходимые переменные и их значения, которые постоянно будут обновляться до их последнего значения.
Все переменные сделать общедоступными и перед сейвом их считать, а после загрузки им же вернуть. В принципе каждый обьект нам и не нужен, нужны лишь изменяемые, ключевые обьекты, а их в игре не так уж и много. Статике это нафиг не нужно.

Автор - Левша
Дата добавления - 09 Сен 2010 в 23:05
proektEKДата: Пт, 10 Сен 2010, 21:18 | Сообщение # 49
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Quote (Левша)
В принципе каждый обьект нам и не нужен, нужны лишь изменяемые, ключевые обьекты, а их в игре не так уж и много. Статике это нафиг не нужно.

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

Не удалось сегодня собрать демку, могу только показать файл сохранения:
Code
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfObjectSaver xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ObjectSaver>
      <objectName>First Person Controller</objectName>
      <position>
        <x>1215.93</x>
        <y>15.30845</y>
        <z>640.7601</z>
      </position>
      <health>2</health>
    </ObjectSaver>
    <ObjectSaver>
      <objectName>Chuvak1</objectName>
      <position>
        <x>1164.853</x>
        <y>20.82947</y>
        <z>404.4395</z>
      </position>
      <objectN>Vrag</objectN>
      <health>11</health>
    </ObjectSaver>
    <ObjectSaver>
      <objectName>Chuvak2</objectName>
      <position>
        <x>1096.564</x>
        <y>20.82947</y>
        <z>487.9405</z>
      </position>
      <objectN>Vrag</objectN>
      <health>12</health>
    </ObjectSaver>
    <ObjectSaver>
      <objectName>Chuvak3</objectName>
      <position>
        <x>1236.791</x>
        <y>20.82947</y>
        <z>552.988</z>
      </position>
      <objectN>Vrag</objectN>
      <health>13</health>
    </ObjectSaver>
</ArrayOfObjectSaver>
 
Сообщение
Quote (Левша)
В принципе каждый обьект нам и не нужен, нужны лишь изменяемые, ключевые обьекты, а их в игре не так уж и много. Статике это нафиг не нужно.

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

Не удалось сегодня собрать демку, могу только показать файл сохранения:
Code
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfObjectSaver xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ObjectSaver>
      <objectName>First Person Controller</objectName>
      <position>
        <x>1215.93</x>
        <y>15.30845</y>
        <z>640.7601</z>
      </position>
      <health>2</health>
    </ObjectSaver>
    <ObjectSaver>
      <objectName>Chuvak1</objectName>
      <position>
        <x>1164.853</x>
        <y>20.82947</y>
        <z>404.4395</z>
      </position>
      <objectN>Vrag</objectN>
      <health>11</health>
    </ObjectSaver>
    <ObjectSaver>
      <objectName>Chuvak2</objectName>
      <position>
        <x>1096.564</x>
        <y>20.82947</y>
        <z>487.9405</z>
      </position>
      <objectN>Vrag</objectN>
      <health>12</health>
    </ObjectSaver>
    <ObjectSaver>
      <objectName>Chuvak3</objectName>
      <position>
        <x>1236.791</x>
        <y>20.82947</y>
        <z>552.988</z>
      </position>
      <objectN>Vrag</objectN>
      <health>13</health>
    </ObjectSaver>
</ArrayOfObjectSaver>

Автор - proektEK
Дата добавления - 10 Сен 2010 в 21:18
СкептикДата: Пт, 10 Сен 2010, 23:58 | Сообщение # 50
Мыслитель
 
Сообщений: 5860
Награды: 48
Репутация: 1731
Статус: Offline
ХМЛ все-таки. Нужные переменные присваиваем в Инспекторе или прописываем в теле скрипта?

Фанат игр Max Payne и Fahrenheit.
 
СообщениеХМЛ все-таки. Нужные переменные присваиваем в Инспекторе или прописываем в теле скрипта?

Автор - Скептик
Дата добавления - 10 Сен 2010 в 23:58
proektEKДата: Сб, 11 Сен 2010, 22:13 | Сообщение # 51
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Quote (Скептик)
ХМЛ все-таки.

Да пока в XML, поначалу были мелкие пакости поэтому его и выбрал чтоб смотреть что сохраняется, а для бинарника придется писать свои классы, чтоб сохранять позицию, поворот и так далее.
Quote (Скептик)
Нужные переменные присваиваем в Инспекторе или прописываем в теле скрипта?

Все переменные прописываем в скрипте.

Кто нибудь знает как передавать значения переменной из JS в C# и наоборот?
 
Сообщение
Quote (Скептик)
ХМЛ все-таки.

Да пока в XML, поначалу были мелкие пакости поэтому его и выбрал чтоб смотреть что сохраняется, а для бинарника придется писать свои классы, чтоб сохранять позицию, поворот и так далее.
Quote (Скептик)
Нужные переменные присваиваем в Инспекторе или прописываем в теле скрипта?

Все переменные прописываем в скрипте.

Кто нибудь знает как передавать значения переменной из JS в C# и наоборот?

Автор - proektEK
Дата добавления - 11 Сен 2010 в 22:13
СкептикДата: Вс, 12 Сен 2010, 00:11 | Сообщение # 52
Мыслитель
 
Сообщений: 5860
Награды: 48
Репутация: 1731
Статус: Offline
Через static var наверняка.
Я знаю лишь, что обратный путь проще.


Фанат игр Max Payne и Fahrenheit.
 
СообщениеЧерез static var наверняка.
Я знаю лишь, что обратный путь проще.

Автор - Скептик
Дата добавления - 12 Сен 2010 в 00:11
ЛевшаДата: Вс, 12 Сен 2010, 04:49 | Сообщение # 53
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Quote (Скептик)
Через static var наверняка.

Да, кстати работает, я делал так.


X.cor.R (Prologue)
 
Сообщение
Quote (Скептик)
Через static var наверняка.

Да, кстати работает, я делал так.

Автор - Левша
Дата добавления - 12 Сен 2010 в 04:49
proektEKДата: Вс, 12 Сен 2010, 16:17 | Сообщение # 54
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Перепробовал все что мог, но так и ничего не получилось, между JS и JS все работает а с C# не выходит, есть только мысля записывать переменные в файл а потом считывать.
 
СообщениеПерепробовал все что мог, но так и ничего не получилось, между JS и JS все работает а с C# не выходит, есть только мысля записывать переменные в файл а потом считывать.

Автор - proektEK
Дата добавления - 12 Сен 2010 в 16:17
ЛевшаДата: Вс, 12 Сен 2010, 17:01 | Сообщение # 55
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
proektEK, не может быть... работает, я делал.
Обьяви в JS >
Code
static var blaBla = 0;

А потом ис C# обращаешься
Code
Имя скрипта.blaBla = 1;

Или допустим:
Code
if (Имя скрипта.blaBla= =1) { ....... }

Все работает...


X.cor.R (Prologue)

Сообщение отредактировал Dekterev - Чт, 01 Дек 2011, 21:13
 
СообщениеproektEK, не может быть... работает, я делал.
Обьяви в JS >
Code
static var blaBla = 0;

А потом ис C# обращаешься
Code
Имя скрипта.blaBla = 1;

Или допустим:
Code
if (Имя скрипта.blaBla= =1) { ....... }

Все работает...

Автор - Левша
Дата добавления - 12 Сен 2010 в 17:01
proektEKДата: Вс, 12 Сен 2010, 17:51 | Сообщение # 56
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Ничего не понимаю, у меня не работает такой метод, C# и C# или JS и JS без проблем.
 
СообщениеНичего не понимаю, у меня не работает такой метод, C# и C# или JS и JS без проблем.

Автор - proektEK
Дата добавления - 12 Сен 2010 в 17:51
ЛевшаДата: Вс, 12 Сен 2010, 18:00 | Сообщение # 57
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Странно... , а ты имя скрипта с Большой буквы писал?
Можно еще наоборот попробовать из JS изменять значение переменных в C#.


X.cor.R (Prologue)
 
СообщениеСтранно... , а ты имя скрипта с Большой буквы писал?
Можно еще наоборот попробовать из JS изменять значение переменных в C#.

Автор - Левша
Дата добавления - 12 Сен 2010 в 18:00
proektEKДата: Вс, 12 Сен 2010, 21:41 | Сообщение # 58
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Да я и большой и с маленькой пробовал
Quote (Левша)
Можно еще наоборот попробовать из JS изменять значение переменных в C#.

Тоже пробовал.

Оптимизировал свой плагин, теперь не глючит.
Создать в Editor js скрипт с именем "Obj", скопировать в него это

Code
import System.IO;
import UnityEditor;
import UnityEngine;

class Obj extends EditorWindow    
{
private var scrollPosition:Vector2 ;
@MenuItem ("proektEk/Demka")
    static function ObjWindow () {
var window : Obj = EditorWindow.GetWindow(Obj);
window.Show ();
window.minSize = new Vector2(400, 500);
}

//var fon:Texture2D=Resources.Load("указываем тектуру", Texture2D);       
private var setc:ArrayList  = new ArrayList ();
private var sets:ArrayList  = new ArrayList ();

var testname:String;
function OnGUI ()    
{
GUILayout.BeginHorizontal( GUI.skin.GetStyle( "Box" ) );
GUILayout.Label ("Selected Script"+" : "+testname, EditorStyles.boldLabel);
if( GUILayout.Button( "Refresh" ) )
{
UpdateList();
}
GUILayout.EndHorizontal();
GUILayout.FlexibleSpace();

//GUI.DrawTexture (Rect (0,0, Screen.width, Screen.height), fon);
scrollPosition = GUILayout.BeginScrollView(scrollPosition);
GUILayout.BeginHorizontal();
GUILayout.BeginVertical();
var obj : GameObject[] = FindObjectsOfType(GameObject);
for(var line:GameObject  in obj)
{
GUILayout.Label(line.name,  EditorStyles.boldLabel) ;
//Кнопки Добавить Удалить===================================
GUILayout.BeginHorizontal();
if(GUILayout.Button("Add script",GUILayout.Width(80)))    
{
line.AddComponent (testname);
}
if(GUILayout.Button("Delet script",GUILayout.Width(80)))    
{
DestroyImmediate(line.GetComponent (testname));
}
EditorGUILayout.EndHorizontal();
//Кнопки Добавить Удалить===================================
}
EditorGUILayout.EndVertical();

GUILayout.BeginVertical();
GUILayout.Label ("JScript", EditorStyles.boldLabel);
for(var file:String  in sets)    
{
if( GUILayout.Button(file.Remove(file.Length-3,3), GUILayout.Width(100)) )
{
testname=file.Remove(file.Length-3,3);
}
}
EditorGUILayout.EndVertical();

GUILayout.BeginVertical();
GUILayout.Label ("CScript", EditorStyles.boldLabel);
for(var filec:String  in setc)    
{
if( GUILayout.Button(filec.Remove(filec.Length-3,3), GUILayout.Width(100)) )
{
testname=filec.Remove(filec.Length-3,3);
}
}
EditorGUILayout.EndVertical();

EditorGUILayout.EndHorizontal();
GUILayout.EndScrollView ();
}

function UpdateList()
{
var dir:DirectoryInfo  = new DirectoryInfo(Application.dataPath);
for(var file:FileInfo  in dir.GetFiles("*.js",SearchOption.AllDirectories))    
{
sets.Add(file.Name);
}

var dircs:DirectoryInfo  = new DirectoryInfo(Application.dataPath);
for(var file:FileInfo  in dircs.GetFiles("*.cs",SearchOption.AllDirectories))    
{
    setc.Add(file.Name);
}
}
}


Сообщение отредактировал proektEK - Вс, 12 Сен 2010, 21:42
 
СообщениеДа я и большой и с маленькой пробовал
Quote (Левша)
Можно еще наоборот попробовать из JS изменять значение переменных в C#.

Тоже пробовал.

Оптимизировал свой плагин, теперь не глючит.
Создать в Editor js скрипт с именем "Obj", скопировать в него это

Code
import System.IO;
import UnityEditor;
import UnityEngine;

class Obj extends EditorWindow    
{
private var scrollPosition:Vector2 ;
@MenuItem ("proektEk/Demka")
    static function ObjWindow () {
var window : Obj = EditorWindow.GetWindow(Obj);
window.Show ();
window.minSize = new Vector2(400, 500);
}

//var fon:Texture2D=Resources.Load("указываем тектуру", Texture2D);       
private var setc:ArrayList  = new ArrayList ();
private var sets:ArrayList  = new ArrayList ();

var testname:String;
function OnGUI ()    
{
GUILayout.BeginHorizontal( GUI.skin.GetStyle( "Box" ) );
GUILayout.Label ("Selected Script"+" : "+testname, EditorStyles.boldLabel);
if( GUILayout.Button( "Refresh" ) )
{
UpdateList();
}
GUILayout.EndHorizontal();
GUILayout.FlexibleSpace();

//GUI.DrawTexture (Rect (0,0, Screen.width, Screen.height), fon);
scrollPosition = GUILayout.BeginScrollView(scrollPosition);
GUILayout.BeginHorizontal();
GUILayout.BeginVertical();
var obj : GameObject[] = FindObjectsOfType(GameObject);
for(var line:GameObject  in obj)
{
GUILayout.Label(line.name,  EditorStyles.boldLabel) ;
//Кнопки Добавить Удалить===================================
GUILayout.BeginHorizontal();
if(GUILayout.Button("Add script",GUILayout.Width(80)))    
{
line.AddComponent (testname);
}
if(GUILayout.Button("Delet script",GUILayout.Width(80)))    
{
DestroyImmediate(line.GetComponent (testname));
}
EditorGUILayout.EndHorizontal();
//Кнопки Добавить Удалить===================================
}
EditorGUILayout.EndVertical();

GUILayout.BeginVertical();
GUILayout.Label ("JScript", EditorStyles.boldLabel);
for(var file:String  in sets)    
{
if( GUILayout.Button(file.Remove(file.Length-3,3), GUILayout.Width(100)) )
{
testname=file.Remove(file.Length-3,3);
}
}
EditorGUILayout.EndVertical();

GUILayout.BeginVertical();
GUILayout.Label ("CScript", EditorStyles.boldLabel);
for(var filec:String  in setc)    
{
if( GUILayout.Button(filec.Remove(filec.Length-3,3), GUILayout.Width(100)) )
{
testname=filec.Remove(filec.Length-3,3);
}
}
EditorGUILayout.EndVertical();

EditorGUILayout.EndHorizontal();
GUILayout.EndScrollView ();
}

function UpdateList()
{
var dir:DirectoryInfo  = new DirectoryInfo(Application.dataPath);
for(var file:FileInfo  in dir.GetFiles("*.js",SearchOption.AllDirectories))    
{
sets.Add(file.Name);
}

var dircs:DirectoryInfo  = new DirectoryInfo(Application.dataPath);
for(var file:FileInfo  in dircs.GetFiles("*.cs",SearchOption.AllDirectories))    
{
    setc.Add(file.Name);
}
}
}

Автор - proektEK
Дата добавления - 12 Сен 2010 в 21:41
DekterevДата: Чт, 01 Дек 2011, 21:16 | Сообщение # 59
 
Сообщений: 1753
Награды: 16
Репутация: 892
Статус: Offline
Обсуждение вынесено в отдельную тему из темы Скрипты.

Поиск | Правила | Новые сообщения
 
СообщениеОбсуждение вынесено в отдельную тему из темы Скрипты.

Автор - Dekterev
Дата добавления - 01 Дек 2011 в 21:16
ЛевшаДата: Чт, 01 Дек 2011, 22:59 | Сообщение # 60
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Quote (proektEK)
Создать в Editor js скрипт с именем "Obj", скопировать в него это

А инструкции? наверняка этим дело не кончаеться... smile


X.cor.R (Prologue)
 
Сообщение
Quote (proektEK)
Создать в Editor js скрипт с именем "Obj", скопировать в него это

А инструкции? наверняка этим дело не кончаеться... smile

Автор - Левша
Дата добавления - 01 Дек 2011 в 22:59
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025