Страница 1 из 1

Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 03 мар 2017, 11:22
юnity
Когда с плеера убираю скрипт 'Player', приложение работает. А когда обратно вешаю, вот такое:Изображение
Это хост.
В билде работает.
Вот сотбственно скрипт:
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class Player : Photon.MonoBehaviour {
        GameObject cam;
        Camera camera;
        AudioListener al;
        bool active;
        Animator anim;
        string[] animName = new string[5]{"idle", "left", "right", "rightgun", "leftgun"};
        Vector2 oldPos = Vector2.zero;
        Vector2 newPos = Vector2.zero;
        int oldNumPic = 0;
        int newNumPic = 0;
        float newPropertyy = 0.0f;
        float newPropertyx = 0.0f;
        bool isSinch = false;
        float offsetTime = 0f;
        int animNum = 0;
        float propertyX;
        float propertyY;
        void Start () {
                if (photonView.isMine) {
                        gameObject.name = "Player";
                        cam = transform.Find("Cam").gameObject;
                        camera = cam.GetComponent<Camera>();
                        al = cam.GetComponent<AudioListener>();
                        active = true;
                        transform.position = new Vector2(Vector2.zero.x + 100.0f, Vector2.zero.y);
                }else{
                        gameObject.name = "OtherPlayer";
                        cam = transform.Find("Cam").gameObject;
                        camera = cam.GetComponent<Camera>();
                        al = cam.GetComponent<AudioListener>();
                        active = false;
                        transform.position = new Vector2(Vector2.zero.x + 300.0f, Vector2.zero.y);
                }
                camera.enabled = active;
                al.enabled = active;
                cam.gameObject.SetActive(active);
                anim = transform.Find("Image").GetComponent<Animator>();
        }
        void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info){
                int numPic = animNum;
                stream.Serialize (ref numPic);
                if (stream.isReading) {
                        oldNumPic = animNum;
                        newNumPic = numPic;
                        offsetTime = 0;
                        isSinch = true;
                }
                float propertyy = propertyY;
                stream.Serialize (ref propertyy);
                if (stream.isReading) {
                        newPropertyy = propertyy;
                        isSinch = true;
                }
        }
        void Update(){
        int i = 0;
        while (i < animName.Length) {
                if (photonView.isMine) {
                        propertyX = Input.mousePosition.x/Screen.currentResolution.width;
                        propertyY = Input.mousePosition.y/Screen.currentResolution.height;
                        if (Input.GetKey (KeyCode.A)) {
                                animNum = 1;
                        } else if (Input.GetKey (KeyCode.D)) {
                                animNum = 2;
                        } else {
                                if(propertyX > 0.5f){
                                        animNum = 3;
                                }else{
                                        animNum = 4;
                                }
                        }
                        if(animNum == 3){
                                anim.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController> (animName[animNum]);
                                anim.SetFloat("MouseProp", propertyY);
                        }else if(animNum == 4){
                                anim.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController> (animName[animNum]);
                                anim.SetFloat("MouseProp", propertyY);
                        }else{
                                anim.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController> (animName[animNum]);
                        }
                } else if (isSinch) {
                        if(newNumPic == 3){//синхронизирую переменные animNum для смены поворота персонажа
                                anim.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController> (animName[newNumPic]);
                                anim.SetFloat("MouseProp", newPropertyy);//и propertyY дляя направления оружия
                        }else if(newNumPic == 4){
                                anim.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController> (animName[newNumPic]);
                                anim.SetFloat("MouseProp", newPropertyy);
                        }else{//это когда бегает вправо-влево
                                anim.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController> (animName[newNumPic]);
                        }
                }
                i++;
                }
        }
}

Re: Кто-нибудь сталкивалсяя с подобной праблемой?

СообщениеДобавлено: 03 мар 2017, 13:39
Woolf
смените название темы на адекватное

Re: Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 03 мар 2017, 16:18
юnity
Маленько переделал код:
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class Player : Photon.MonoBehaviour {
        GameObject cam;
        Camera camera;
        AudioListener al;
        bool active;
        Animator anim;
        string[] animName = new string[5]{"idle", "left", "right", "rightgun", "leftgun"};
        Vector2 oldPos = Vector2.zero;
        Vector2 newPos = Vector2.zero;
        int oldNumPic = 0;
        int newNumPic = 0;
        float newPropertyy = 0.0f;
        float newPropertyx = 0.0f;
        bool isSinch = false;
        float offsetTime = 0f;
        int animNum = 0;
        float propertyX;
        float propertyY;
        Canvas canvas;
        void Start () {
                canvas = FindObjectOfType<Canvas>();
                gameObject.transform.SetParent (canvas.transform);
                if (photonView.isMine) {
                        gameObject.name = "Player";
                        cam = transform.FindChild("Cam").gameObject;
                        camera = cam.GetComponent<Camera>();
                        al = cam.GetComponent<AudioListener>();
                        active = true;
                        anim = gameObject.GetComponent<Animator>();
                        transform.position = new Vector2(Vector2.zero.x + 100.0f, Vector2.zero.y);
                }else{
                        gameObject.name = "OtherPlayer";
                        cam = transform.FindChild("Cam").gameObject;
                        camera = cam.GetComponent<Camera>();
                        al = cam.GetComponent<AudioListener>();
                        active = false;
                        anim = gameObject.GetComponent<Animator>();
                        transform.position = new Vector2(Vector2.zero.x + 300.0f, Vector2.zero.y);
                }
                camera.enabled = active;
                al.enabled = active;
                cam.gameObject.SetActive(active);
        }
        void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info){
                int numPic = animNum;
                stream.Serialize (ref numPic);
                if (stream.isReading) {
                        oldNumPic = animNum;
                        newNumPic = numPic;
                        offsetTime = 0;
                        isSinch = true;
                }
                float propertyy = propertyY;
                stream.Serialize (ref propertyy);
                if (stream.isReading) {
                        newPropertyy = propertyy;
                        isSinch = true;
                }
        }
        void Update(){
                int i = 0;
                while (i < animName.Length) {
                        if (photonView.isMine) {
                                propertyX = camera.ScreenToViewportPoint(Input.mousePosition).x;
                                propertyY = camera.ScreenToViewportPoint(Input.mousePosition).y;
                                if (Input.GetKey (KeyCode.A)) {
                                        animNum = 1;
                                } else if (Input.GetKey (KeyCode.D)) {
                                        animNum = 2;
                                } else {
                                        if(propertyX > 0.5f){
                                                animNum = 3;
                                        }else{
                                                animNum = 4;
                                        }
                                }
                                if(animNum == 3){
                                        anim.runtimeAnimatorController = (RuntimeAnimatorController)Resources.Load<RuntimeAnimatorController> (animName[animNum]);
                                        anim.SetFloat("MouseProp", propertyY);
                                }else if(animNum == 4){
                                        anim.runtimeAnimatorController = (RuntimeAnimatorController)Resources.Load<RuntimeAnimatorController> (animName[animNum]);
                                        anim.SetFloat("MouseProp", propertyY);
                                }else{
//                                      transform.GetComponent<Image> ().sprite = Resources.Load<Sprite> (animName[animNum]);
                                        anim.runtimeAnimatorController = (RuntimeAnimatorController)Resources.Load<RuntimeAnimatorController> (animName[animNum]);
                                }
                        } else if (isSinch) {
                                if(newNumPic == 3){//синхронизирую переменные animNum для смены поворота персонажа
                                        anim.runtimeAnimatorController = (RuntimeAnimatorController)Resources.Load<RuntimeAnimatorController> (animName[newNumPic]);
                                        anim.SetFloat("MouseProp", newPropertyy);//и propertyY дляя направления оружия
                                }else if(newNumPic == 4){
                                        anim.runtimeAnimatorController = (RuntimeAnimatorController)Resources.Load<RuntimeAnimatorController> (animName[newNumPic]);
                                        anim.SetFloat("MouseProp", newPropertyy);
                                }else{
//                                      transform.GetComponent<Image> ().sprite = Resources.Load<Sprite> (animName[newNumPic]);
                                        anim.runtimeAnimatorController = (RuntimeAnimatorController)Resources.Load<RuntimeAnimatorController> (animName[newNumPic]);
                                }
                        }
                        i++;
                }
//              if(GetComponent<Image>().sprite != null)
//              Debug.Log(GetComponent<Image>().sprite.name);
        }
}
 

Но ничего не помогло, думал что проблема может быть в том, что пытаюсь постоянно сканировать положение мышки и происходит перегрузка, попробовал менть переменные по клику но не помогло. Во дела, я так понял - фотон отключается моим хостом.

Re: Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 06 мар 2017, 13:26
Aleksey
Это что? WebGl + photon cloud сборка? Открой консоль браузера чтобы посмотреть ошибки. В опере это например так. Меню - разработка - инструменты разработчика
СТОП, мне не померещилось?) веб плеер сборка?) серьезно?) все популярные браузеры отказались от веб плеера давно уже. В юнити же билд веб плеера убрали давно уже. Ты в старой версии юнити чтоли веб плеер сборку билдишь?) а зачем?)

Re: Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 06 мар 2017, 19:11
юnity
Ну, я вообще то не в курсе, и инструмент 5.2.0f3, когда отказались? Без этого класса всё видно. А я что пропустил? Что теперь? В новых версиях юньки WebPlayer не билдится? Юнька теперь только для гаджетов? билдил дляяя vk.

Re: Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 06 мар 2017, 21:07
DbIMok
год назад отказались, с 5.4. теперь WebGL и вот вот состоится переход браузеров на его более продвинутый вариант WebAssembly

Re: Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 09 мар 2017, 13:10
юnity
Не пойму , в чём дело. В WebGL абсолютно такой же результат. Понимаю, что дело не в сервере. Но опять встаёт всё тот же вопрос. Я пользуюсь 2D, поэтому сделал игрока из Imag, "может ли проблема его отрисовки, заключаться в этом?" Спавню:
Синтаксис:
Используется csharp
player = PhotonNetwork.Instantiate("myImagePrefab", pos, ouat,0);
player.transform.SetParent(canvas.transform);
В билде для Windows всё работает на обоих клиентах, а на сервере чёрный экран. Не думяю, что на спрайты надо компанент photonView??
Может кто нибудь подскажет.

Re: Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 09 мар 2017, 15:49
Aleksey
Что там в консоли браузера показывает ? В опере - Меню - разработка - инструменты разработчика
И я не понимаю зачем тебе пытки на WebGl , вебгл не рабочая платформа. По крайней мере я не видел не одной популярной игры на вебгл. Загрузки колоссальные. пинг 150-200

Re: Проблема с отображением Canvas PhotonCloud

СообщениеДобавлено: 09 мар 2017, 18:12
юnity
Мне разницы нет какая платформа, это для теста. На одном компе тестировать невозможно перехват происходит всего. Я ришил в интернети протестировать работу Photonовского движка. Что бы баги все исправить. Когда игра будет готова подумаю как с ней всёже поступить, попробую ещё что нибудь. Как видите упёрся в скалу, не из-за платформы. Вот где то в другом заморозка 100-500. Что вот не так, может из за того что юнька не с оффициального сайта? Почему без публикации работает. Без понятия что делать. Другой проэкт сбилденный на этой программе без проблем.
Что то тут в этих строчках кода. Может залить надо библиотеку какую нибудь в проэкт, там раньше 2 файла лежало html и unity3d Photon работал, асейчас рога. Я до этого не пробовал UI использовать. Может что-то делаю сейчас неправильно. Но придерживаюсь правил, повешал PhotonView на префаб, к компанентам же не добавишь, и префаб видно.
Вот тут получилось так, что этого игрока видно становится, когда он становится дочерним объектом в канвасе, который по суте объект сцены. Но на префабе есть PhotonView. Не делать же несколько Canvasов. Это наверное неправильно или нет, нигде такой информации не нашёл.

Ооо. Вроде последний фикс прошёл успешно. Да, мои опасения по поводу UI были несомненно верны. Отказался от него. Сделал спрайт и заработало.
PS:Спасибо что подсказали что WebPlayer не раотает, работает только на WbGL.