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

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

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

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

Ответ
 
Опции темы
Старый 25.11.2012, 17:57   #796
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Сообщение от Nerd96 Посмотреть сообщение
Возможно ли отключить backface culling?
http://docs.unity3d.com/Documentatio...lAndDepth.html
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nerd (25.11.2012)
Старый 25.11.2012, 23:20   #797
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

А как сделать свою сериализацию? А то мои классы не сохраняются.
Т.е. я хочу вручную превращать класс в byte[] и создавать класс и byte[].
(Offline)
 
Ответить с цитированием
Старый 26.11.2012, 10:50   #798
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Ну... рефлексия + MemoryStream + BinaryWriter/BinaryReader
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 26.11.2012, 20:10   #799
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: Вопросы от новичка

Как связать два Toggle, то есть как радио баттон: один включаешь, другой выключается?
(Offline)
 
Ответить с цитированием
Старый 26.11.2012, 20:29   #800
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Сообщение от is.SarCasm Посмотреть сообщение
Как связать два Toggle, то есть как радио баттон: один включаешь, другой выключается?
Если текущий поменял значение на true, - пройти по всем кроме текущего и поменять им на false
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 26.11.2012, 20:53   #801
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: Вопросы от новичка

Как решить проблему с тем что в телефонах высота экрана больше ширины? То есть на компьютере удобней отображать так, а на телефоне всё повернуть( в том числе и ГУИ же)
(Offline)
 
Ответить с цитированием
Старый 26.11.2012, 21:37   #802
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Ничего поворачивать не надо, при билде сам выбираешь landskape или portrait. Просто привязать GUI к краям/углам экрана. Конечно можно делать 2 GUI.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 26.11.2012, 22:47   #803
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Сообщение от pax Посмотреть сообщение
Ну... рефлексия + MemoryStream + BinaryWriter/BinaryReader
Т.е. вручную рекурсивно получать все public или сериализрванные поля, определять их тип\размер и записывать? Что-то сложно. Должен быть свой сериализатор. В java такой сериализатор точно есть, но его почему-то не любят.
(Offline)
 
Ответить с цитированием
Старый 27.11.2012, 01:35   #804
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Не знаю какой сериализатор в юнити, но System.Runtime.Serialization отлично сохраняет и восстанавливает классы не зная их типа.
В Unity сохраняется только по типу ссылки. Т.е. если ссылка MonoBehaviour, то ни черта не сохранит, даже если в эту ссылку будет записан объект с кучей инфы(
Пример просто на C#, но надеюсь Mono тоже поддерживает.
        private static byte[] Serialize(object obj)
        {
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream stream = new MemoryStream();
            bf.Serialize(stream, obj);
            stream.Close();
            return stream.ToArray();
        }
        private static object Deserialize(byte[] array)
        {
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream stream = new MemoryStream(array);
            object obj = bf.Deserialize(stream);
            stream.Close();
            return obj;
        }
Только, если десириализацию(восстановление) делать в OnEnable можно, то когда сериализацию делать? Проверять в Editor'е, если объект Dirty, то сохранить его?
(Offline)
 
Ответить с цитированием
Старый 27.11.2012, 07:15   #805
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Mono поддерживает, но оно не применимо к объектам Unity. Ни одной ссылки на ресурсы в рантайме сохранить если явно не знать как получить объект из ресурса. К тому же как сохранять и восстанавливать компоненты, которые добавляются через AddComponent() и GetComponent()? Так что только вручную и с помощью своего менеджера ресурсов, "знающего" как воссоздать тот или иной объект (хранящий пути для Resource.Load или непосредственно ссылки на объекты) и "знающий", какой объект как создан (т.е. вероятнее всего придется либо создавать все объекты и через этот менеджер, либо на объекты вешать специальный компонент, содержащий информацию для сериализации).
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 27.11.2012 в 09:39.
(Offline)
 
Ответить с цитированием
Старый 27.11.2012, 20:41   #806
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Забыл написать, у меня задача проще. Мои классы - не скрипты.
Если помнишь я делал свой MineCraft. Там есть два типа блоков: Cube и Cross(трава). Оба они наследуют один класс Block. Но списки сейчас приходится делать для каждого типа. Вот хочу, чтобы хватало одного List<Block> blockSet.

Хотя, наверно было бы лучше использовать XML, но я так и не разобрался как для него делать инспектор. Если инспектор для TextAsset сделать, то он будет для всех левых форматов.
И еще не понятно как в XML хранить путь к объектам\ассетам. Наверно можно хранить их ID, а сами объекты хранить в папке Resources. Или напрямую пусть к файлу.
Просто еще хочется сделать, чтобы BlockSet с текстурами мог грузится из проекта и из вне проекта.
(Offline)
 
Ответить с цитированием
Старый 28.11.2012, 14:01   #807
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

По сериализации у нас Dream писал урок http://forum.boolean.name/showthread.php?t=12638
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 01.12.2012, 09:14   #808
pie
ПроЭктировщик
 
Аватар для pie
 
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений
(для 64 пользователей)
Ответ: Вопросы от новичка

Всем привет! Возник такой вопрос. Как сделать круглый бесконечный рандомный тоннель. Под рандомностью понимается смещение центра окружности. Видно на скриншотах. Я могу нарисовать окружность и смещать его центр относительно какой то величины рандомом. Но как формировать поверхность между 1-ой и второй окружностью.
Спасибо за внимание.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 727
Размер:	8.7 Кб
ID:	18214  Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 768
Размер:	22.7 Кб
ID:	18215  
(Offline)
 
Ответить с цитированием
Старый 01.12.2012, 10:32   #809
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Злость Ответ: Вопросы от новичка

http://blog.nobel-joergensen.com/201...mesh-in-unity/
http://gamesmaker.ru/programming/dir...trianglestrip/

Окружность - многоугольник с огромным числом рёбер(векторное представление)
А потом что-то типо такого:
public int SegmentCount=8;
public 
Vector3[] Centers={new Vector3(0,0,0)};
public 
float Distance=1f;

void Make(){

    
MeshFilter meshFilter GetComponent();
    if (
meshFilter==null){
        
Debug.LogError("MeshFilter not found!");
        return;
    }

    
Vector3[] = new Vector3[SegmentCount*Centers.Lenght];
    
int[] t=new int[SegmentCount*(Centers.Lenght-1)*3];
           for(
int j=0;j<Centers.Lenght;j++){
                for(
int i=0;i<SegmentCount;i++)
                    {
                        
v[i+SegmentCount*j]= Centers[j] + new Vector(j*Distance,Mathf.Sin((i*360f*Mathf.GradToDeg)/SegmentCount),Mathf.Cos((i*360f*Mathf.GradToDeg)/SegmentCount));
                        
//тут нужно придумать удобное заполнение массива треугольников
                    
}
           }
    
//не уверен что будет нормально работать
    
Mesh mesh meshFilter.sharedMesh;
    
mesh.Clear();

    
mesh.vertices v;
    
mesh.triangles t;

    
mesh.RecalculateNormals();
    
mesh.RecalculateBounds();
    
mesh.Optimize();

__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 02.12.2012, 00:08   #810
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Интересно ваше мнение. Если нужно сделать GUI с анимационными кнопка, красивой сменой экранов(допустим, чтобы одни элементы улетали в одну сторону, а с другой стороны прилетали другие) и подобными эффектами, то как лучше сделать такое?
Я сейчас для каждого элемента делаю свой GameObject и на нем проигрывал анимации или просто смещаю его, а сам элемент рисуется, через GUILayout, но смещается\масштабируется в зависит от трансформации.
Но GameObject для каждого элемента не супер. Как бы вы это сделали?

public enum ScaleType {
	ByWidth,
	ByHeight,
	ByWidthAndHeight,
	ByAverageSize,
	ByMinSize,
	ByMaxSize
}

public abstract class GUIComponent : MonoBehaviour {
	
	[SerializeField] private ScaleType scaleType = ScaleType.ByAverageSize;
	[SerializeField] private float scale = 50;
	[SerializeField] private float border = 5;
	protected bool pressedDown = false;
	private bool process = false;
	
	public abstract bool Draw();
	
	protected virtual void Update() {
		if(pressedDown) process = true;
	}
	
	protected Rect GetRect(GUIContent content) {
		float borderX = border * GetScaleX() / 100f;
		float borderY = border * GetScaleY() / 100f;
		
		Vector2 size = GUI.skin.button.CalcSize(content);
		float aspect = size.x/size.y;
		if(scaleType == ScaleType.ByWidthAndHeight) aspect = 1f;
		
		float w = GetScaleX() * scale / 100f * aspect;
		float h = GetScaleY() * scale / 100f;
		
		Rect rect = GUILayoutUtility.GetRect( w+borderX*2, h+borderY*2, GUILayout.ExpandWidth(false) );
		rect.x += borderX;
		rect.y += borderY;
		rect.width -= borderX*2;
		rect.height -= borderY*2;
		
		Vector2 center = rect.center;
		rect.width *= transform.lossyScale.x;
		rect.height *= transform.lossyScale.y;
		rect.center = center;
		return rect;
	}
	
	private float GetScaleX() {
		switch(scaleType) {
			case ScaleType.ByWidth : return Screen.width;
			case ScaleType.ByHeight : return Screen.height;
			case ScaleType.ByAverageSize : return (Screen.width+Screen.height)/2f;
			case ScaleType.ByMinSize : return Mathf.Min(Screen.width, Screen.height);
			case ScaleType.ByMaxSize : return Mathf.Max(Screen.width, Screen.height);
			case ScaleType.ByWidthAndHeight : return Screen.width;
		}
		return 0f;
	}
	
	private float GetScaleY() {
		switch(scaleType) {
			case ScaleType.ByWidth : return Screen.width;
			case ScaleType.ByHeight : return Screen.height;
			case ScaleType.ByAverageSize : return (Screen.width+Screen.height)/2f;
			case ScaleType.ByMinSize : return Mathf.Min(Screen.width, Screen.height);
			case ScaleType.ByMaxSize : return Mathf.Max(Screen.width, Screen.height);
			case ScaleType.ByWidthAndHeight : return Screen.height;
		}
		return 0f;
	}
	
	public bool IsPressedDown() {
		return pressedDown;
	}
	
	public bool IsProcess() {
		bool end = process && !animation.isPlaying;
		if(end) process = false;
		return end;
	}
	
}

public class GUIButton : GUIComponent {
	
	public string text;
	
	public override bool Draw() {
		Rect rect = GetRect( new GUIContent(text) );
		return pressedDown = GUI.Button(rect, text);
	}
	
}
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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