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)

RegIon 05.06.2012 16:58

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

Сообщение от pie (Сообщение 229501)
Как поменять шейдер материала на лету?

PHP код:

if(Input.GetKey(KeyCode.A))
            {
                
brakeLights[0].renderer.material[0].shader тут нужно обратиться к стандартному шейдеру self-illumin/diffuse;
            }else{
                
brakeLights[0].renderer.material[0].shader а тут к обычному diffuse;
            } 

Как обращаться к стандартным шейдерам?

Я думаю проще бедет сделать так:
PHP код:

Public Material lol_1;
Public 
Material lol_2;

void Update()
{
    if(
Input.GetKeyDown(KeyCode.A))
            
renderer.material=lol_1;
     else
           
renderer.material=lol_2;
   


Надо кусок одной текстуры затайлить на другой(квадратная карта), как это можно сделать не Texture.setPixel()? (надо циферки из текстуры нарисовать на другой всего раз)

pax 05.06.2012 22:42

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

Сообщение от Костян (Сообщение 229511)
Надо кусок одной текстуры затайлить на другой(квадратная карта), как это можно сделать не Texture.setPixel()? (надо циферки из текстуры нарисовать на другой всего раз)

А вот это не подойдет (вторая перегрузка)?
Texture2D.GetPixels
Texture2D.SetPixels
Только обе текстуры должны поддерживать чтение и запись пикселей (можно включить в режиме Advanced).

RegIon 06.06.2012 11:27

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

using UnityEngine;
using System.Collections;

public class 
Numbers MonoBehaviour {

    public 
Texture2D NumberTex;
    public 
int Num=0;
    public 
Vector2 Pos;
    public 
bool alignRight=true;
    
    public 
Texture2D RenderTo;
    
    private 
int Block_x=0;
    private 
int Block_y=0;
    private 
Color[,] Pixels=new Color[10,128*128];
    
void Start () {
        if(
NumberTex)
        {
        
Block_x=(int)NumberTex.width/10;
        
Block_y=NumberTex.height;
        
            for(
int i=0;i<10;i++){
                
                
Color[] tmp=NumberTex.GetPixels(i*Block_x,0,Block_x,Block_y);
                
                for(
int n=0;n<tmp.Length;n++)    
                    
Pixels[i,n]=tmp[n];
                
            }
        }
    }
    
    
void Update () {
        
        
char[] tmp_1=Num.ToString().ToCharArray();
        if(
RenderTo)
        {
            for(
int i=0;i<tmp_1.Length;i++)
            {
                
Debug.Log(int.Parse(tmp_1[i].ToString()));
                
                if(
alignRight)
-----------
ТУТ------------->RenderTo.SetPixels(Pos.x-(i*Block_x),Pos.y,Block_x,Block_y,---->Pixels[int.Parse(tmp_1[i].ToString())]);
            }
        }
    }


Я так понял среда .NET вообще не дружит с массивами?
Как мне получить к внутренний массив в двумерном массиве?
//Например как в С:
Код:

int lol[10,512];
int 2lol[512]=lol[0];

?

ffinder 06.06.2012 11:48

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

Сообщение от Костян (Сообщение 229597)
Я так понял среда .NET вообще не дружит с массивами

ну да, тысячи проектов обходятся вообще без массивов, потому что "среда .NET c ними не дружит", всё верно:-D

pax 06.06.2012 13:25

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

Сообщение от Костян (Сообщение 229597)
PHP код:

Pixels[int.Parse(tmp_1[i].ToString())]); 


Что это за страсть такая?

Цитата:

Сообщение от Костян (Сообщение 229597)
Как мне получить к внутренний массив в двумерном массиве?

Объяви массив по другому:

PHP код:

private Color[][] Pixels=new Color[10][]; 


WISHMASTER35 06.06.2012 21:57

Ответ: Вопросы от новичка
 
Я конечно понимаю, что работа из другого потока может создать ошибки. Но зачем запретили даже со своими полями работать, если скрипт наследован от юнитивских классов(
Вот как быть? В префабе, в ScriptableObject храню нужные мне данные. И с этими данными нужно работать в другом потоке. Такой облом аж плачу(

Еще обнаружил, что в префабе не будят хранится данные сериализованного объекта, если ссылка на родительский класс этого объекта.
Хотел сделать [SerializeField] private Figure figure = new Cube(); А в ней хранить разные типы объектов, но хръ!
Не говоря уже, что если не сделать new Cube(), то юнити сам создаст объект Figure не смотря на то, что этот класс абстрактный))

is.SarCasm 07.06.2012 12:33

Ответ: Вопросы от новичка
 
Как передать информацию из одного уровня в другой?? Например я из Menu захожу на Level_1 и мне нужно передать настройки игры.

RegIon 07.06.2012 13:23

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

Сообщение от is.SarCasm (Сообщение 229709)
Как передать информацию из одного уровня в другой?? Например я из Menu захожу на Level_1 и мне нужно передать настройки игры.

если много, то можно завести одни статичный массив и записать в него конфу, хотя можно все переменные статичить:
public static int lolo

cahekp 07.06.2012 13:31

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

Сообщение от is.SarCasm (Сообщение 229709)
Как передать информацию из одного уровня в другой?? Например я из Menu захожу на Level_1 и мне нужно передать настройки игры.

Есть несколько способов.

1) Можно в меню создать отдельный объект с настройками и добавить на него компонент с простыми строчками:
PHP код:

void Awake() {
     
DontDestroyOnLoad(gameObject);


После этого этот объект не будет удаляться при переходе от одного уровня в другой. В уровне Level_1, допустим, можно написать что-то вроде:
PHP код:

void Start() {
    
GameObject go GameObject.Find("OPTIONS");
    
MyOptions mo go.GetComponent<MyOptions>();
    
// и так далее...


2) Самый простой, на мой взгляд. Просто создай статичный класс. Его даже на сцену не нужно вытаскивать.
PHP код:

public class Options MonoBehaviour {
    public static 
int screenWidth;
    public static 
int screenHeight;
    public static 
float soundVolume;


И всё! Теперь из любого скрипта можешь обращаться к нему напрямую: Options.soundVolume = 1.0F;
И что-нибудь читать из него: int sw = Options.screenWidth;
При переходе из одного уровня в другой содержимое статичного класса не обнуляется.

RegIon 07.06.2012 16:06

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

Сообщение от pax (Сообщение 229607)
Что это за страсть такая?


Объяви массив по другому:
PHP код:

private Color[][] Pixels=new Color[10][]; 


Страсть-самый простой способ из числа сделать массив цифр, а выглядит она так:
PHP код:

int lol=122345678;
string[] lol_str=Split.(lol.ToString().Replase(""," ")," ");//сплит не держит пустую ""
int lol_int= new int[];
for(
int i=0;i<lol_str.Length();i++) lol_int[i]=int.Parse(lol_str[i]); 


pie 08.06.2012 09:45

Ответ: Вопросы от новичка
 
Всем привет! У меня появилось 2 вопроса:
1) Есть ли где нибудь пример палитры которая высвечивается в GUI и при выборе цвета некий объект тоже меняет цвет.
2) Как заставить объект двигаться по поинтам. То бишь по определенному пути.

pax 08.06.2012 10:26

Ответ: Вопросы от новичка
 
1) Найди картинку с палитрой, читай с нее цвет пикселя. В более сложном случае тебе надо работать с HSV/HSL/HSB
2) Тут был хороший пример перемещения по вэйпоинтам. А вообще все зависит от задачи.

pie 08.06.2012 15:31

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

is.SarCasm 08.06.2012 22:41

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

`System.IO.File' does not contain a definition for `WriteAllLines'
WTF?

pax 08.06.2012 22:49

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

Сообщение от is.SarCasm (Сообщение 229866)
WTF?

Платформа? Какие выбраны настройки Mono? 2.0 или 2.0 Subset? Второй урезанный. Да и не обещал никто, что абсолютно все функции будут реализованы в Mono из Net Framework, который использует Unity.


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

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