Resources.Load - Форум Игроделов
Вт, 04 Фев 2025, 02:57 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Resources.Load
DushikДата: Пт, 19 Июл 2013, 16:40 | Сообщение # 1
 
Сообщений: 22
Награды: 0
Репутация: 0
Статус: Offline
Привет всем ! Постораюсь объяснить как можно кратче.
У меня есть 3 объекта, для каждого объекта есть по 4 текстуры.
При нажатии на определеные NGUI кнопки в переменную objMat; добавляется какой то один из трех объектов и в зависимости от того какое имя у этого объекта открывается доступ к его 4-м текстурам и потом я выбираю понравившуюся текстуру, сами текстуры динамически загружаются из папки Resources.
Поидее после запуска игры все переменные в этом скрипте должны быть пустыми, но на деле получается что всем переменным с текстурами сразу же присвоены текстуры ПОСЛЕДНЕГО объекта в скрипте (в моем случае это culinder1)

Код

using UnityEngine;
using System.Collections;

public class ChangeMaterial : MonoBehaviour {
          public Texture2D _texture01;
          public Texture2D _texture02;
          public Texture2D _texture03;
          public Texture2D _texture04;
          public GameObject objMat;  // Сюда заносится объект который включен в данный момент, заносится он из скрипта CreateObject.

           
          void Update()
          {
                  objMat = gameObject.GetComponent<CreateObjects>().ONobj;
   if (!objMat)
   {
                   this._texture01 = null;
        this._texture02 = null;
                   this._texture03 = null;
        this._texture04 = null;
   }
                    if (objMat == GameObject.Find ("sphere1"))
                  {
                    
                          string _texturePath01 = "Material&Texture/01/sphere01mat1";
                          string _texturePath02 = "Material&Texture/01/sphere01mat2";
                          string _texturePath03 = "Material&Texture/01/sphere01mat3";
                          string _texturePath04 = "Material&Texture/01/sphere01mat4";
                    _texture01 = (Texture2D)Resources.Load(_texturePath01, typeof(Texture2D));
                    _texture02 = (Texture2D)Resources.Load(_texturePath02, typeof(Texture2D));
                    _texture03 = (Texture2D)Resources.Load(_texturePath03, typeof(Texture2D));
                    _texture04 = (Texture2D)Resources.Load(_texturePath04, typeof(Texture2D));

                  }

                  if (objMat == GameObject.Find ("box1"))
                  {
                          string _texturePath01 = "Material&Texture/02/box02mat1";
                          string _texturePath02 = "Material&Texture/02/box02mat2";
                          string _texturePath03 = "Material&Texture/02/box02mat3";
                          string _texturePath04 = "Material&Texture/02/box02mat4";
                    _texture01 = (Texture2D)Resources.Load(_texturePath01, typeof(Texture2D));
                    _texture02 = (Texture2D)Resources.Load(_texturePath02, typeof(Texture2D));
                    _texture03 = (Texture2D)Resources.Load(_texturePath03, typeof(Texture2D));
                    _texture04 = (Texture2D)Resources.Load(_texturePath04, typeof(Texture2D));

                  }

                  if (objMat == GameObject.Find ("culinder1"))
                  {
                          string _texturePath01 = "Material&Texture/03/culinder03mat1";
                          string _texturePath02 = "Material&Texture/03/culinder03mat2";
                          string _texturePath03 = "Material&Texture/03/culinder03mat3";
                          string _texturePath04 = "Material&Texture/03/culinder03mat4";
                    _texture01 = (Texture2D)Resources.Load(_texturePath01, typeof(Texture2D));
                    _texture02 = (Texture2D)Resources.Load(_texturePath02, typeof(Texture2D));
                    _texture03 = (Texture2D)Resources.Load(_texturePath03, typeof(Texture2D));
                    _texture04 = (Texture2D)Resources.Load(_texturePath04, typeof(Texture2D));

                  }
  
 
СообщениеПривет всем ! Постораюсь объяснить как можно кратче.
У меня есть 3 объекта, для каждого объекта есть по 4 текстуры.
При нажатии на определеные NGUI кнопки в переменную objMat; добавляется какой то один из трех объектов и в зависимости от того какое имя у этого объекта открывается доступ к его 4-м текстурам и потом я выбираю понравившуюся текстуру, сами текстуры динамически загружаются из папки Resources.
Поидее после запуска игры все переменные в этом скрипте должны быть пустыми, но на деле получается что всем переменным с текстурами сразу же присвоены текстуры ПОСЛЕДНЕГО объекта в скрипте (в моем случае это culinder1)

Код

using UnityEngine;
using System.Collections;

public class ChangeMaterial : MonoBehaviour {
          public Texture2D _texture01;
          public Texture2D _texture02;
          public Texture2D _texture03;
          public Texture2D _texture04;
          public GameObject objMat;  // Сюда заносится объект который включен в данный момент, заносится он из скрипта CreateObject.

           
          void Update()
          {
                  objMat = gameObject.GetComponent<CreateObjects>().ONobj;
   if (!objMat)
   {
                   this._texture01 = null;
        this._texture02 = null;
                   this._texture03 = null;
        this._texture04 = null;
   }
                    if (objMat == GameObject.Find ("sphere1"))
                  {
                    
                          string _texturePath01 = "Material&Texture/01/sphere01mat1";
                          string _texturePath02 = "Material&Texture/01/sphere01mat2";
                          string _texturePath03 = "Material&Texture/01/sphere01mat3";
                          string _texturePath04 = "Material&Texture/01/sphere01mat4";
                    _texture01 = (Texture2D)Resources.Load(_texturePath01, typeof(Texture2D));
                    _texture02 = (Texture2D)Resources.Load(_texturePath02, typeof(Texture2D));
                    _texture03 = (Texture2D)Resources.Load(_texturePath03, typeof(Texture2D));
                    _texture04 = (Texture2D)Resources.Load(_texturePath04, typeof(Texture2D));

                  }

                  if (objMat == GameObject.Find ("box1"))
                  {
                          string _texturePath01 = "Material&Texture/02/box02mat1";
                          string _texturePath02 = "Material&Texture/02/box02mat2";
                          string _texturePath03 = "Material&Texture/02/box02mat3";
                          string _texturePath04 = "Material&Texture/02/box02mat4";
                    _texture01 = (Texture2D)Resources.Load(_texturePath01, typeof(Texture2D));
                    _texture02 = (Texture2D)Resources.Load(_texturePath02, typeof(Texture2D));
                    _texture03 = (Texture2D)Resources.Load(_texturePath03, typeof(Texture2D));
                    _texture04 = (Texture2D)Resources.Load(_texturePath04, typeof(Texture2D));

                  }

                  if (objMat == GameObject.Find ("culinder1"))
                  {
                          string _texturePath01 = "Material&Texture/03/culinder03mat1";
                          string _texturePath02 = "Material&Texture/03/culinder03mat2";
                          string _texturePath03 = "Material&Texture/03/culinder03mat3";
                          string _texturePath04 = "Material&Texture/03/culinder03mat4";
                    _texture01 = (Texture2D)Resources.Load(_texturePath01, typeof(Texture2D));
                    _texture02 = (Texture2D)Resources.Load(_texturePath02, typeof(Texture2D));
                    _texture03 = (Texture2D)Resources.Load(_texturePath03, typeof(Texture2D));
                    _texture04 = (Texture2D)Resources.Load(_texturePath04, typeof(Texture2D));

                  }
  

Автор - Dushik
Дата добавления - 19 Июл 2013 в 16:40
ЛевшаДата: Пт, 19 Июл 2013, 18:15 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Материалы в редакторе, при тесте так себя ведут, в билде такого не будет.

X.cor.R (Prologue)
 
СообщениеМатериалы в редакторе, при тесте так себя ведут, в билде такого не будет.

Автор - Левша
Дата добавления - 19 Июл 2013 в 18:15
DushikДата: Пт, 19 Июл 2013, 18:39 | Сообщение # 3
 
Сообщений: 22
Награды: 0
Репутация: 0
Статус: Offline
Цитата (Левша)
Материалы в редакторе, при тесте так себя ведут, в билде такого не будет.

Да нет в билде тоже самое =(( Я даже для проверки создал NGUI Label в который пишется надпись когда выполняется условие if (objMat == GameObject.Find ("culinder1"))....
Он почему то при старте думает что к переменной objMat применен объект culinder1, хотя в переменной ничего нет.
 
Сообщение
Цитата (Левша)
Материалы в редакторе, при тесте так себя ведут, в билде такого не будет.

Да нет в билде тоже самое =(( Я даже для проверки создал NGUI Label в который пишется надпись когда выполняется условие if (objMat == GameObject.Find ("culinder1"))....
Он почему то при старте думает что к переменной objMat применен объект culinder1, хотя в переменной ничего нет.

Автор - Dushik
Дата добавления - 19 Июл 2013 в 18:39
ЛевшаДата: Пт, 19 Июл 2013, 20:29 | Сообщение # 4
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Я честно говоря мало что понял... кто - что там думает.
Но код работает так, как ты его написал, это без вариантов. Проверь свою логику, где то ошибся.


X.cor.R (Prologue)
 
СообщениеЯ честно говоря мало что понял... кто - что там думает.
Но код работает так, как ты его написал, это без вариантов. Проверь свою логику, где то ошибся.

Автор - Левша
Дата добавления - 19 Июл 2013 в 20:29
HunjethДата: Сб, 20 Июл 2013, 17:04 | Сообщение # 5
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
функция Update работает когда скрипт включен.
тоесть при старте у тебя выполняеться функция Update..

в инспекторе убрать галочку на ChangeMaterial
тогда у тебя не будет работать скрипт

чтобы включить твой скрипт в коде пропиши :
Код
ChangeMaterial changeMaterial = ....GetComponent<ChangeMaterial>();
changeMaterial.enabled = true;


Доп..
фунции типо :
Resources.Load
GetComponent<>()
лучше поместить в Start или Awake
Awake выполняеться 1 раз без разн скрипт вкл или вык, лучше подходит для сериализации типо GetComponent<>()
Start выполняеться 1 раз когда скрипт вкл, лучше подходит для загрузки и настройки типо Resources.Load, myvar = 10, myvar = false, enabled = false


Сообщение отредактировал Hunjeth - Сб, 20 Июл 2013, 18:54
 
Сообщениефункция Update работает когда скрипт включен.
тоесть при старте у тебя выполняеться функция Update..

в инспекторе убрать галочку на ChangeMaterial
тогда у тебя не будет работать скрипт

чтобы включить твой скрипт в коде пропиши :
Код
ChangeMaterial changeMaterial = ....GetComponent<ChangeMaterial>();
changeMaterial.enabled = true;


Доп..
фунции типо :
Resources.Load
GetComponent<>()
лучше поместить в Start или Awake
Awake выполняеться 1 раз без разн скрипт вкл или вык, лучше подходит для сериализации типо GetComponent<>()
Start выполняеться 1 раз когда скрипт вкл, лучше подходит для загрузки и настройки типо Resources.Load, myvar = 10, myvar = false, enabled = false

Автор - Hunjeth
Дата добавления - 20 Июл 2013 в 17:04
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025