Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 27.02.2013, 23:14   #1
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Проблема с PlayerPrefs

Есть простой скрипт монолога пресонажа, привестсвие в котром должно показываться только один раз, пробоавал ничего не выходит:
using UnityEngine;
using System.Collections;

public class 
Quests MonoBehaviour {
    
    private 
bool activedialog true;
    public 
string text "";
    private 
int show 1;
    private 
bool newQuest false;
    public 
string questText;
    public 
GUISkin skin;
    
    
void Start()
    {
        
text "Приветствую тебя на острове белезней. Как видно, остров очень красив, но не отвлекайся от своей цели, заглядываясь на красоту острова...\n Тебе надо помочь жителям острова излечиться от чумы, которая убивает все больше и больше людей. Для начала собирай растения, которые увидешь, а потом приноси их жителям, чтобы они варили себе отвар, но не забывай, что люди могут умереть от того, что ты не успел... Enter - подолжить";    
    }
    
    
void Update()
    {
        if(
activedialog == true)
        {
            
transform.GetComponent<CharacterMotor>().enabled false;
            
transform.GetComponent<MouseLook>().enabled false;
            
GameObject.FindGameObjectWithTag("MainCamera").GetComponent<MouseLook>().enabled false;
        }
        if(
activedialog == false)
        {
            
transform.GetComponent<CharacterMotor>().enabled true;
            
transform.GetComponent<MouseLook>().enabled true;
            
GameObject.FindGameObjectWithTag("MainCamera").GetComponent<MouseLook>().enabled true;
        }
        
        if(
Input.GetKeyDown(KeyCode.Return) && show == 1show 2;
        else { 
            if(
Input.GetKeyDown(KeyCode.Return) && show == 2)
            {
                
show 0;
                
text "";
                
activedialog false;
            }
            if(
Input.GetKeyDown(KeyCode.Return) && show == 3)
            {
                
show 0;
                
text "";
                
activedialog false;
                
newQuest true;
            }
        }
    }

    
void OnGUI()
    {
        
GUI.skin skin;
        if(
activedialog == true)
        {
            if(
show == 1)
            {
                
GUI.Box(new Rect(0,Screen.height-100,Screen.width,300),"");
                
GUI.Label(new Rect(10,Screen.height-75,Screen.width,300),text);
            }
            if(
show == 2)
            {
                
text "Вот теперь ты немного знаешь об этом острове. Теперь тебе надо найти одну из 9 деревень и попробовать помочь людям.\n - Но как я узнаю какая деревня заражена?\n - У зараженных деревень летают мухи... Enter - чтобы продолжить";
                
GUI.Box(new Rect(0,Screen.height-100,Screen.width,300),"");
                
GUI.Label(new Rect(10,Screen.height-75,Screen.width,300),text);
            }
            if(
show == 3)
            {
                
text "А вот и первая зараженная деревня... Чтоже делать в нчала???\n Конечно же собрать травы для жителей.Говорят, что нужно на человека 3 травы, а тут всего-то 3 человека...\n Но только с наружи, а внутри домов, которые наглухо закрыты??? Ладно, принесу 15 трав для всех и отдам их в мельницу.";
                
GUI.Box(new Rect(0,Screen.height-100,Screen.width,300),"");
                
GUI.Label(new Rect(10,Screen.height-75,Screen.width,300),text);                    
            }
        }
        if(
newQuest == true)
        {
            if(
show == 3)    
            {    
                
questText "Собрать 15 трав...";
                
GUI.Label(new Rect(Screen.width-200,Screen.height-200,300,30),questText);
            }
        }
        
    }
    
    
void OnTriggerEnter(Collider other)
    {
        if(
other.tag == "Evenger Village")
        {
            
activedialog true;
            
show 3;
        }
    }
    

То есть, действия в триггерах должно отобрадаться только один раз без повторго показа, не могу сделать ничего с этим. Помогите
(Offline)
 
Ответить с цитированием
Старый 28.02.2013, 01:10   #2
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Проблема с PlayerPrefs

Непонятно в чем заключается проблема с PlayerPrefs, так как кода соответствующего не присутствует. Диалоги организованы не совсем корректно. Сами диалоги в коде держать затея хуже некуда. Весь текст из кода выносить. В текстовый файл, XML, куда удобно. По диалогам, создать дерево диалога с узлами и писать в него текущий узел. И в зависимости от текущего узла тогда уже решать что выводить.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Старый 03.03.2013, 01:46   #3
Okay
Знающий
 
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений
(для 74 пользователей)
Ответ: Проблема с PlayerPrefs

И где у тебя вообще PlayerPrefs? Если ты собираешься сохранять в реестр, то тебе нужно использовать сохранение с PlayerPrefs и загрузку. И соответственно устанавливать переменной SHOW значение, которое у тебя в реестре
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com