Код ведет себя по-разному при сборке игры - PullRequest
1 голос
/ 29 сентября 2019

Я имел дело с этой проблемой (которая начала происходить без причины) в течение последних 3 дней, и с ужесточением сроков, это сводит меня с ума.

Итак, суть в том, что игрок нажимаети камера перемещается в какое-то место и разблокирует мышь, поэтому игрок может щелкнуть интерактивный (в данном случае дневник).

Что я сделал, чтобы попытаться это исправить:

-Создана сборка разработки, нет ошибок и ничего в output.log

-Повторены все активы

-Запущен новый проект и импортированы туда активы

-Обновлен с Unity с 2018.1 до 2018.3

-Снял скрипт и снова прикрепил его

-Сстроил для разных систем

-Перезапустил Unity и мой компьютер

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DiaryController : MonoBehaviour
{


    public Camera mainCam;
    public float moveSpeed = 10.0f;
    public GameObject cameraObject;
    public GameObject targetObject;
    private bool movingTowardsTarget = false;
    private float lerpSpeed = 0.225f;
    public Transform fromRot;
    public Transform toRot;
    private bool inPosition = false;
    public bool onSwitch = false;

    public bool freezecamera = false;
    public bool freezeplayer = false;

    public WheelchairController Mov;
    public bool EPressed = false;
    public GameObject Crosshair;

    public MouseControl myMouseScript;

    private bool onDiary = false;


    void Start()
    {
        onDiary = false;
        mainCam = Camera.main;
    }

    // Update is called once per frame
    void Update()
    {
        FreezeCamera();//Checks if the camera has been frozen

        FreezePlayer();//Checks if the player has been frozen


        if (onSwitch && Input.GetKeyDown(KeyCode.E))
        {

            CheckPlayer();
            EPressed = true;
        }

        if (onSwitch && movingTowardsTarget)
        {
            GoToDiary();
            Crosshair.SetActive(false);
        }
        else if (onSwitch && !movingTowardsTarget && EPressed)
        {
            GoToChair();
            Crosshair.SetActive(true);
        }

    }

    void CheckPlayer()
    {

        if (movingTowardsTarget)
        {
            movingTowardsTarget = false;
            freezecamera = false;
        }

        else
        {
            fromRot = fromRot.transform;
            toRot = toRot.transform;
            // freezecamera = true;
            freezeplayer = true;
            movingTowardsTarget = true;


        }

    }

    void GoToDiary()
    {
        StartCoroutine(DelayFreeze());
        MoveTowardsTarget(targetObject);
        Cursor.visible = true;

        Cursor.lockState = CursorLockMode.Confined;

        Crosshair.SetActive(false);
         freezecamera = true;
        freezeplayer = true;
        onDiary = true;
    }

    void GoToChair()
    {

        StartCoroutine(DelayMov());


        MoveTowardsTarget(cameraObject);
        freezecamera = false;

        Cursor.lockState = CursorLockMode.Locked;
        Crosshair.SetActive(true);
        onDiary = false;
    }

    IEnumerator DelayMov()
    {
        Debug.Log("DelayActivated");
        yield return new WaitForSeconds(2);
        freezeplayer = false;

    }

    IEnumerator DelayFreeze()
    {
        if (!freezeplayer)
        {
            Debug.Log("DelayActivated");
            yield return new WaitForSeconds(1);
            freezeplayer = true;
        }
    }



    void MoveTowardsTarget(GameObject target)
    {

        transform.position = Vector3.MoveTowards(transform.position, target.transform.position, moveSpeed * Time.deltaTime);
        transform.rotation = target.transform.rotation;

        if (Vector3.Distance(transform.position, target.transform.position) < 0.1)
        {
            inPosition = true;
            Debug.Log("InPosition");

            if (inPosition)
            {
                transform.rotation = target.transform.rotation;

                if (Mathf.Abs(fromRot.localEulerAngles.y - toRot.localEulerAngles.y) < 3)
                {
                    transform.rotation = target.transform.rotation;
                    //movingTowardsTarget = false;
                    inPosition = false;
                    Debug.Log("RotatingCamera");
                }

            }
            else
            {
                transform.rotation = Quaternion.Lerp(fromRot.rotation, toRot.rotation, Time.time * lerpSpeed);
                Debug.Log("RotatingCamera2");
            }
        }
    }

    void FreezeCamera()
    {
        if (freezecamera)
        {
            Debug.Log("CameraFrozen");
            myMouseScript.rotationSpeed = 0.0f;
            // MouseControl.mouseLookEnabled = false;
            ZoomIn.zoomEnable = false;
            Crosshair.SetActive(false);

        }
        else if (!freezecamera)
        {

            myMouseScript.rotationSpeed = 0.5f;
            //MouseControl.mouseLookEnabled = true;
            //ZoomIn.zoomEnable = true;
            //Crosshair.SetActive(true);
        }
    }

    void FreezePlayer()
    {
        if (freezeplayer)
        {
            Debug.Log("PlayerFrozen");
            Mov.moveSpeed = 0.0f;
            Mov.turnSpeed = 0.0f;
            Mov.freeze = true;

        }
        else if (!freezeplayer)
        {
            Mov.moveSpeed = 0.4f;
            Mov.turnSpeed = 2.5f;
            Mov.freeze = false;
        }

    }

    void OnGUI()
    {
        if (onSwitch)
        {
            if (!freezeplayer)
            {
                GUI.Box(new Rect(0, 0, 200, 20), "Press E to open diary");

            }
            else
            {
                GUI.Box(new Rect(0, 0, 200, 20), "Press E to close diary");
            }
        }
    }
}

Вот как он ведет себя в редакторе: https://i.gyazo.com/4570740f027b736789ed1ab13488bf44.gif

Вот как он ведет себя в сборке: https://i.gyazo.com/6f1b0485855c24c81abb2278f4361a36.gif

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...