forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

Gector 03.08.2012 18:56

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 235138)
gector, .а почему player prefab не используешь? он вроде бы для сохранения и создан.

черт! не пойму я этих вершинных шейдеров. почему если я меняю appdata_full на _base или свою структуру, то вылвзят какие-то левые ошибки?
я правильно понимаю что если вершинный шейдер возвращает структуру v2f, то сурфейс шейдер не будет работать, а только фрагментный?
и почему после pragma vertex иногда пишется двоеточие?

Из справки:
Цитата:

therefore it is not recommended to call during actual gameplay.
:)
Я предпочитаю по-старинке отдельным файлом. Тем более что та штука не предназначена для сохранения в целом.

WISHMASTER35 03.08.2012 19:14

Ответ: Вопросы от новичка
 
почему она не предназначена для сохранения?
а тебе во время самой игры надо сохранять? не понял почему во время игры не рекомендовано сохранять.

Gector 03.08.2012 19:34

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 235142)
почему она не предназначена для сохранения?
а тебе во время самой игры надо сохранять? не понял почему во время игры не рекомендовано сохранять.

Я как понимаю это для восстановления игры в особо хардкорных случаях).
Тем более, что загрузка через обычный файл более гибкая.

Кстати говоря опять не получилось. Может я не все знаю об андройдовской ФС? Теоретически - что может быть не так? Код ведь прост как две копейки.

Hurrit 03.08.2012 19:47

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

WISHMASTER35 03.08.2012 20:00

Ответ: Вопросы от новичка
 
Gector, ну для сохранения счета и кол-ва пройденных уровней подойдет. для сохранения больших данных врядли т.к. туда кажется массив байт(файл) не запишешь.
ты только на андроиде в корне папок не создавай, а то от других игр уже и так куча мусора в корне. что-то нужное среди них херь найдешь.

Hurrit, луч ширины не имеет. используй капсулу.

Gector 03.08.2012 20:12

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 235150)
Gector, ну для сохранения счета и кол-ва пройденных уровней подойдет. для сохранения больших данных врядли т.к. туда кажется массив байт(файл) не запишешь.
ты только на андроиде в корне папок не создавай, а то от других игр уже и так куча мусора в корне. что-то нужное среди них херь найдешь.

Про корень я знаю).
А вот на счет сохранения это смотря как сохранять. Абсолютно все сохранять это вообще не вариант.
Тут в принципе еще проще. Повесил на объект скрипт для сохранения и все дела. Только надо разобраться как эти файлы создавать. Может я его найти не могу по какой то другой причине...

Hurrit 03.08.2012 23:07

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 235150)
Hurrit, луч ширины не имеет. используй капсулу.

а можешь переделать вот этот кусок с обычным лучом на капсулу, а то я что-то не врубаюсь:

PHP код:

Ray ray = new Ray(transform.positionMyOwnInput.GetCoordinates() - camera.transform.position);
RaycastHit hitInfo = new RaycastHit();

if (
Physics.Raycast(rayout hitInfo3) == false)
{} 


cahekp 04.08.2012 02:49

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Hurrit (Сообщение 235174)
а можешь переделать вот этот кусок с обычным лучом на капсулу, а то я что-то не врубаюсь.

Думаю, вместо капсулы тебе лучше использовать сферу.
Вот:
PHP код:

Ray ray = new Ray(transform.positionMyOwnInput.GetCoordinates() - camera.transform.position);
RaycastHit hitInfo = new RaycastHit();
float radius 1// "Ширина луча". Радиус сферы.

if (Physics.SphereCast(rayradiusout hitInfo3) == false)
{} 


Hurrit 04.08.2012 04:50

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от cahekp (Сообщение 235184)
Думаю, вместо капсулы тебе лучше использовать сферу.
Вот:
PHP код:

Ray ray = new Ray(transform.positionMyOwnInput.GetCoordinates() - camera.transform.position);
RaycastHit hitInfo = new RaycastHit();
float radius 1// "Ширина луча". Радиус сферы.

if (Physics.SphereCast(rayradiusout hitInfo3) == false)
{} 


дело в том, что мне нужен объект в вытянутой форме

cahekp 05.08.2012 13:27

Ответ: Вопросы от новичка
 
Physics.CapsuleCast
PHP код:

using UnityEngine;
using System.Collections;

public class 
example MonoBehaviour {
    
void Update() {
        
RaycastHit hit;
        
CharacterController charContr GetComponent<CharacterController>();
        
Vector3 p1 transform.position charContr.center Vector3.up * -charContr.height 0.5F;
        
Vector3 p2 p1 Vector3.up charContr.height;
        if (
Physics.CapsuleCast(p1p2charContr.radiustransform.forwardout hit10))
            
distanceToObstacle hit.distance;
        
    }



Gector 05.08.2012 22:37

Ответ: Вопросы от новичка
 
Народ. Подскажите пожалуйста как на дройде реализовать сохранение\загрузку на скажем 10 слотов. Везде говорят о PlayerPrefs, но инфы как это заюзать очень мало.
UPD: Есть такая идея - сохранять все данные в строковую переменную и от 1 до 10 по выбору через PlayerPrefs. Потом парсить при загрузке данные. Благо в игре не требуется сохранение абсолютно всего.
Хотя классическое сохранение в файл бы подошло лучше).

pax 06.08.2012 00:15

Ответ: Вопросы от новичка
 
Буквально на той неделе переписал пример работы с Ini на PlayerPrefs
PHP код:

using System.Collections.Generic;
using System.Text;
using UnityEngine;

public class 
Ini
{
    public static 
void Save(string keyDictionary<stringstringdata)
    {
        
StringBuilder sb = new StringBuilder();

        foreach (
KeyValuePair<stringstringkeyValuePair in data)
        {
            
sb.AppendLine(keyValuePair.Key "=" keyValuePair.Value);
        }

        
PlayerPrefs.SetString(keysb.ToString());
    }

    public static 
Dictionary<stringstringLoad(string key)
    {
        
Dictionary<stringstringdata = new Dictionary<stringstring>();

        
string[] lines PlayerPrefs.GetString(key).Split(new char[]{'\r','\n'});

        foreach (
string line in lines)
        {
            
string dataString line.Trim();

            if (
string.IsNullOrEmpty(dataString)) continue;

            if (
dataString.StartsWith(";")) continue;

            if (
dataString.Contains("="))
            {
                
int pos dataString.IndexOf("=");

                
string valueKey dataString.Substring(0pos).Trim();
                
string value "";
                if ((
pos 1) < dataString.Length)
                {
                    
value dataString.Substring(pos 1dataString.Length pos 1).Trim();
                }
                
data.Add(valueKeyvalue);
            }

        }
        return 
data;
    }


Пример использования:
PHP код:

//Сохранение
var data = new Dictionary<stringstring>();
data.Add("Key1","Value1");
Ini.Save("GameSave"data);

//загрузка
data Ini.Load("GameSave");
var 
Value1 data["Key1"]; 

Правда PlayerPrefs это и есть простейший ini с поддержкой сохранения целых чисел и флоатов кроме строк. А пример выше - ini в ini ))

PS: На днях поковыряю дроид на счет сохранения файлов, отпишусь.

Gector 06.08.2012 14:55

Ответ: Вопросы от новичка
 
Посоны. Я прошу прощения за свою тупость. :-D Файл сохраняется там же где и кэш, то есть - Android\Data\com.anyappname.company.

pax 06.08.2012 15:04

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Gector (Сообщение 235334)
Посоны. Я прошу прощения за свою тупость. :-D Файл сохраняется там же где и кэш, то есть - Android\Data\com.anyappname.company.

Значит туда Application.persistentDataPath указывал)

Gector 06.08.2012 15:06

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 235335)
Значит туда Application.persistentDataPath указывал)

Именно). У меня она не читалась потом из-за того что persistentDataPath убрал из адреса. Теперь осталось поковырять его на тему чтения\записи - и вперед).


Часовой пояс GMT +4, время: 17:27.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot