|
Unity Мультиплатформенный инструмент для разработки игр |
26.01.2013, 02:58
|
#901
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Стандартный Фпс контроллер не предназначен для работы с сетью в том виде, в котором он есть. Он не передает никакой логики серверу.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
26.01.2013, 03:00
|
#902
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Ну я передаю координаты в OnSerializeNetworkView(), этого недостаточно? Самое интересное то, что в редакторе всё работает без ошибок.
|
(Offline)
|
|
26.01.2013, 03:43
|
#903
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Достаточно. Передаешь и читаешь?
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
26.01.2013, 03:51
|
#904
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Ага.
|
(Offline)
|
|
11.02.2013, 05:49
|
#905
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Уважаемые гуру юнити, и с# в частности. Ни у кого нет желания написать краткий фак по андроиду, либо перевести яваскрипты с standart mobile assets на си-шарп и прокоментировать? Нет, перевести с явы на си-шарп я и сам могу, но хотелось бы разобраться полностью в особенностях написания приложения для смартфона. Курение мануалов даётся со скрипом. Был бы весьма признателен, да и в копилке уроков не помешало бы.
|
(Offline)
|
|
21.02.2013, 23:06
|
#906
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Начал писать LOD, блин, я начинаю влюбляться в юнити, знаю 5% движка, а уже чтото получается )
Написал 3-х ступенчатый LOD, конечно дорабатывать еще надо, но не сегодня (поздновато)
using UnityEngine; using System.Collections;
public class LOD : MonoBehaviour { public Mesh meshHiPoly, meshMidPoly, meshLowPoly; public int lodLevel, currentLodLevel; public float distanceHiPoly, distanceMidPoly; public float distance; public Camera thisCamera; // Use this for initialization void Start () { if (meshHiPoly!=null) {lodLevel++;} if (meshMidPoly!=null) {lodLevel++;} if (meshLowPoly!=null) {lodLevel++;} //защита от криворукости ) if (lodLevel==2 && meshLowPoly!=null) {meshMidPoly=meshLowPoly; meshLowPoly=null;} if (lodLevel==1 && meshLowPoly!=null) {meshHiPoly=meshLowPoly; meshLowPoly=null;} if (lodLevel==1 && meshMidPoly!=null) {meshHiPoly=meshMidPoly; meshMidPoly=null;} thisCamera = Camera.main; } // Update is called once per frame void Update () { distance = Vector3.Distance(transform.position,thisCamera.transform.position); if (distance<distanceHiPoly && currentLodLevel!=1) { currentLodLevel=1; GetComponent<MeshFilter>().mesh = meshHiPoly; } if (distance<distanceMidPoly && distance>distanceHiPoly && currentLodLevel!=2) { currentLodLevel=2; GetComponent<MeshFilter>().mesh = meshMidPoly; } if (distance>distanceMidPoly && currentLodLevel!=3) { currentLodLevel=3; GetComponent<MeshFilter>().mesh = meshLowPoly; } } }
Сделал чтобы пользователь ложил меши сам, но косяк в том, что материалы должны быть разные.
Наверное самый простой вариант это префабы ложить?
И еще вопрос, как можно сделать такой же скроллер дистанций как в Про версии LOD'a ?
А еще как можно достать уровень графики, ну чтобы знать fantastic она или normal..?
Также, если у меня чтото сильно коряво, пишите!
__________________
|
(Offline)
|
|
21.02.2013, 23:24
|
#907
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
1. Материал назначить renderer.sharedMaterial = myMaterial;
2. Для того чтобы написать скроллер надо писать кастомный редактор своего скрипта (компонента).
3. http://docs.unity3d.com/Documentatio...lityLevel.html
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.02.2013, 09:34
|
#908
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Вопрос появился, по поводу маски, но нарыл ответ, опять же спасибо тебе )
Нашел в одном ответе ты дал ссылку на шейдер маски, вот только там очень не хватает выбора основного цвета. У меня текстуры почти одинаковым цветом.
Помои плиз, можно же как то палитру туда загнать, как например в диффузе, я бы сам с удовольствием сделал, но до CG мне еще очень далеко, я немного только в HLSL работал.
Сам шейдер
Shader "MaskedTexture" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _Mask ("Culling Mask", 2D) = "white" {} _Cutoff ("Alpha cutoff", Range (0,1)) = 0.1 } SubShader { Tags {"Queue"="Transparent"} Lighting Off ZWrite Off Blend SrcAlpha OneMinusSrcAlpha AlphaTest GEqual [_Cutoff] Pass { SetTexture [_Mask] {combine texture} SetTexture [_MainTex] {combine texture, previous} } } }
Я понимаю что там надо считать _MainTex c инспектора, но как...
Нашел как пипетку вставить, _Color ("Main Color", Color) = (1,1,1,1)
А вот как сделать связь не могу найти
__________________
|
(Offline)
|
|
22.02.2013, 09:59
|
#909
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
В этом шейдере нет CG, тут чистый ShaderLab и следовательно это Fixed Function (OpenGL ES 1.1)
Shader "MaskedTexture" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Mask ("Culling Mask", 2D) = "white" {} _Cutoff ("Alpha cutoff", Range (0,1)) = 0.1 } SubShader { Tags {"Queue"="Transparent"} Lighting Off ZWrite Off Blend SrcAlpha OneMinusSrcAlpha AlphaTest GEqual [_Cutoff] Pass { SetTexture [_Mask] { constantColor [_Color] combine texture * constant DOUBLE } SetTexture [_MainTex] {combine texture, previous} } } }
DOUBLE можешь убрать если не нравится
UPD: Хотя я тут вероятно ошибся... а может и будет работать, я вроде маску покрасил и с ней скомбинировал... попробуй
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.02.2013, 10:59
|
#910
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
СПАСИБО ПАКС!!
UPD: Хотя я тут вероятно ошибся... а может и будет работать, я вроде маску покрасил и с ней скомбинировал... попробуй
|
Да фигня, главное суть ясна )
Сделал две версии шейдера
MaskedTexture
Shader "MaskedTexture" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Mask ("Culling Mask", 2D) = "black" {} _Cutoff ("Alpha cutoff", Range (0,1)) = 0.1 } SubShader { Tags {"Queue"="Transparent"} Lighting Off ZWrite Off Blend SrcAlpha OneMinusSrcAlpha AlphaTest GEqual [_Cutoff] Pass { SetTexture [_Mask] { constantColor [_ColorMask] } SetTexture [_MainTex] { constantColor [_Color] combine texture * constant, previous } } } }
MaskedTexture Fast
Shader "MaskedTexture Fast" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Mask ("Culling Mask", 2D) = "black" {} _Cutoff ("Alpha cutoff", Range (0,1)) = 0.1 } SubShader { Tags {"Queue"="Transparent"} Lighting Off ZWrite On AlphaTest GEqual [_Cutoff] Pass { SetTexture [_Mask] { constantColor [_ColorMask] } SetTexture [_MainTex] { constantColor [_Color] combine texture * constant, previous } } } }
Расскажу в чем разница, в втором варианте я оставил включенном Z-буффер и отключил альфа смешивание Blend SrcAlpha OneMinusSrcAlpha. На сколько я понимаю, таким образом должно работать быстрее, если нет, сообщите.
Слева на рисунке фаст, разница не большая, а при использовании на большом расстоянии вообще остуствует.
__________________
|
(Offline)
|
|
22.02.2013, 11:53
|
#911
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Там вероятно я недописал во второй SetTexture
SetTexture [_MainTex] {combine texture * previous, previous}
т.е. вероятно правильно вот так
Shader "MaskedTexture" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Mask ("Culling Mask", 2D) = "white" {} _Cutoff ("Alpha cutoff", Range (0,1)) = 0.1 } SubShader { Tags {"Queue"="Transparent"} Lighting Off ZWrite Off Blend SrcAlpha OneMinusSrcAlpha AlphaTest GEqual [_Cutoff] Pass { SetTexture [_Mask] { constantColor [_Color] combine texture * constant DOUBLE } SetTexture [_MainTex] {combine texture * previous, previous} } } }
|
(Offline)
|
|
22.02.2013, 13:16
|
#912
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Спасибо пакс, да как я сделал тоже норм )
Вот только сейчас заметил большой косяк
using UnityEngine; using System.Collections;
public class LOD : MonoBehaviour { public GameObject prefabHiPoly, prefabMidPoly, prefabLowPoly; void Start () { GetComponent<MeshFilter>().mesh = prefabHiPoly.GetComponent<MeshFilter>().mesh; GetComponent<Renderer>().material = prefabHiPoly.GetComponent<Renderer>().material; }
В результате в префабе слетают mesh и material. Что я не так сделал?
В коде я просто беру ссылку меша префаба и ложу в ссылку ГеймОбжекта, и то же самое с материалом.
Их как то надо копировать? А старые компоненты надо зачищать?
__________________
|
(Offline)
|
|
22.02.2013, 13:20
|
#913
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Свойство mesh и material создают новые экземпляры объектов, которые можно менять в рантайме, но обычно это делают над объектами сцены. Для получения ресурсов без ущерба для префаба используй следующее:
using UnityEngine; using System.Collections;
public class LOD : MonoBehaviour { public GameObject prefabHiPoly, prefabMidPoly, prefabLowPoly; void Start () { GetComponent<MeshFilter>().sharedMesh = prefabHiPoly.GetComponent<MeshFilter>().sharedMesh; GetComponent<Renderer>().sharedMaterial = prefabHiPoly.GetComponent<Renderer>().sharedMaterial; }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.02.2013, 13:34
|
#914
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Блин, Паск, ну ты точно Сэнсей!!! ))
__________________
|
(Offline)
|
|
22.02.2013, 16:42
|
#915
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Опять встрял и не пойму в чем дело.
Есть два скрипта Plant, Grid. В скрипт Plant я достаю терраин из Grid
public class Grid : MonoBehaviour { public static Terrain thisTerrain; void Awake () { thisTerrain = (Terrain)GetComponent<Terrain>(); }}
public class Plant : MonoBehaviour { void Start () { transform.position.y = (float)Grid.thisTerrain.SampleHeight(transform.position); }}
А компилятор кричит что ошибка в строке transform.position.y = (float)Grid.thisTerrain.SampleHeight(transform.pos ition);
error CS1612: Cannot modify a value type return value of `UnityEngine.Transform.position'. Consider storing the value in a temporary variable
Якобы во временных переменных косяк. Но переменные то у меня не временные а публичные и thisTerrain еще и статичная
Разобрался, получается что, transfom.position.y может только хранить значение, но ложить туда нельзя??
И что изменить y, на нужное значение самый простое решение transform.position = newVector3(transform.position.x, 10 , transform.position.z); ??
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:41.
|