修复相机的任何可能性null [英] Any possibility to fix camera null

查看:99
本文介绍了修复相机的任何可能性null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以帮我减慢camera.main null错误的问题吗?请多谢您的时间:)尝试修复我的黑屏,但根本无法正常工作.

Hi can somebody help me to slowe problem with camera.main null error? pls thank you to you time :) Am try to fix my black screen but its not working at all.

如果您可以放慢速度,那将是愚蠢的,而且很棒,但是我现在不再更多地介绍它了,我尝试了一些相机vector3和vector2,但是不,我现在真的不多了,我读了很多教程,vids,什么都没有帮助我解决了这个问题,并为我的生活带来了很多麻烦.请您解决一下,告诉我如何再次感谢您.

If you can to slow it will be doupe and great but i dont now any more how to slov it at all, i try some camera vector3 and vector2 but nahhh i dont now really more i read so much tutorials, vids and nothing helped me to fix this issue and its anoying to much for my life. pls if you can fix it tell me how thank you again.

    private GameObject GameObjectHolder;

    private IEnumerable<Player> _players;
    private IEnumerable<LootItem> _lootItems;
    private IEnumerable<ExfiltrationPoint> _extractPoints;

    private float _playersNextUpdateTime;
    private float _exfilNextUpdateTime;
    private float _espUpdateInterval = 10f;
    private float _itemNextUpdateTime;
    private Camera cam;

    private bool _isESPMenuActive;
    private bool _isConfigMenuActive;
    private bool _showPlayersESP;
    private bool _crosshair;
    private bool _showItemESP;
    private bool _showValuables;
    private bool _showExfiljewEPS;


    private float _maxDrawingDistance = 400f;
    private float _maxLootDrawingDistance = 1500f;

    void Start()
    {
        cam = Camera.main;
    }

    public void Load()
    {
        GameObjectHolder = new GameObject();
        GameObjectHolder.AddComponent<Abso>();

        DontDestroyOnLoad(GameObjectHolder);
    }

    public void Unload()
    {
        Destroy(GameObjectHolder);
        Destroy(this);
    }


    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F5))
        {
            Unload();
        }
        if (Input.GetKeyDown(KeyCode.F11))
        {
            _isESPMenuActive = !_isESPMenuActive;

            if (_isConfigMenuActive)
                _isConfigMenuActive = false;
        }

    }


    private void OnGUI()
    {
        if (_isESPMenuActive)
        {
            DrawESPMenu();
        }

        if (_isConfigMenuActive)
        {
            DrawConfigMenu();
        }


        GUI.Label(new Rect(10f, 10f, 1000f, 500), "<COLOR=#FF0000>H</color><COLOR=#FF4600>I</color><COLOR=#FF8C00>S</color><COLOR=#FFD200>T</color><COLOR=#FFff00>O</color><COLOR=#B9ff00>N</color><COLOR=#73ff00>C</color><COLOR=#2Dff00></color><COLOR=#00ff00>I</color><COLOR=#00ff46></color><COLOR=#00ff8C>T</color>");

        if (_showPlayersESP && Time.time >= _playersNextUpdateTime)
        {
            _players = FindObjectsOfType<Player>();
            _playersNextUpdateTime = Time.time + _espUpdateInterval;
        }



        if (_showPlayersESP)
        {
            DrawPlayers();
        }


        if (_showExfiljewEPS && Time.time >= _exfilNextUpdateTime)
        {
            _extractPoints = FindObjectsOfType<ExfiltrationPoint>();
            _exfilNextUpdateTime = Time.time + _espUpdateInterval;
        }

        if (_showExfiljewEPS)
        {
            jewExfilEPS();
        }

        if (_showItemESP && Time.time >= _itemNextUpdateTime)
        {
            _lootItems = FindObjectsOfType<LootItem>();
            _itemNextUpdateTime = Time.time + _espUpdateInterval;
        }
        if (_showItemESP && !_showValuables)
        {
            DrawLoot();
        }
        if (_showItemESP && _showValuables)
        {
            DrawValuableLoot();
        }

        if (_crosshair)
        {
            DrawCrosshair();
        }
    }

    public void DrawCrosshair()
    {
        GuiHelper.DrawBox((float)Screen.width / 2f, (float)Screen.height / 2f - 5f, 1f, 11f, Color.yellow);
        GuiHelper.DrawBox((float)Screen.width / 2f - 5f, (float)Screen.height / 2f, 11f, 1f, Color.yellow);
    }

    private void jewExfilEPS()
    {
        foreach (var point in _extractPoints)
        {
            if (point != null)
            {
                float distanceToObject = Vector3.Distance(Camera.main.transform.position, point.transform.position);
                var exfilContainerBoundingVector = new Vector3(
                    Camera.main.WorldToScreenPoint(point.transform.position).x,
                    Camera.main.WorldToScreenPoint(point.transform.position).y,
                    Camera.main.WorldToScreenPoint(point.transform.position).z);

                if (exfilContainerBoundingVector.z > 0.01)
                {
                    GUI.color = Color.green;
                    int distance = (int)distanceToObject;
                    String exfilName = point.name;
                    string boxText = $"{exfilName} - {distance}m";

                    GUI.Label(new Rect(exfilContainerBoundingVector.x - 50f, (float)Screen.height - exfilContainerBoundingVector.y, 100f, 50f), boxText);
                }
            }
        }
    }

    public void DrawLoot()
    {
        foreach (LootItem item in _lootItems)
        {
            if (item == null)
            {
                break;
            }
            float num = Vector3.Distance(Camera.main.transform.position, item.transform.position);
            Vector3 vector = new Vector3(Camera.main.WorldToScreenPoint(item.transform.position).x, Camera.main.WorldToScreenPoint(item.transform.position).y, Camera.main.WorldToScreenPoint(item.transform.position).z);
            if ((double)vector.z > 0.01)
            {
                GUI.color = Color.cyan;
                int num2 = (int)num;
                string name = item.name;
                string text = string.Format("{0} - {1}m", name, num2);
                GUI.Label(new Rect(vector.x - 50f, (float)Screen.height - vector.y, 100f, 50f), text);
            }
        }
    }

    public void DrawValuableLoot()
    {
        foreach (LootItem lootItem in _lootItems)
        {
            if (lootItem == null)
            {
                break;
            }
            if (lootItem.name == null)
            {
                break;
            }
            if (lootItem.name == string.Empty)
            {
                break;
            }
            if (lootItem.name.Contains("key") || lootItem.name.Contains("tetriz") || lootItem.name.Contains("lion") || lootItem.name.Contains("virtexprocessor") || lootItem.name.Contains("defibrillator") || lootItem.name.Contains("bitcoin") || lootItem.name.Contains("transilluminator") || lootItem.name.Contains("prokill") || lootItem.name.Contains("video_card") || lootItem.name.Contains("document"))
            {
                float num = Vector3.Distance(Camera.main.transform.position, lootItem.transform.position);
                Vector3 vector = new Vector3(Camera.main.WorldToScreenPoint(lootItem.transform.position).x, Camera.main.WorldToScreenPoint(lootItem.transform.position).y, Camera.main.WorldToScreenPoint(lootItem.transform.position).z);
                if (num <= _maxLootDrawingDistance && (double)vector.z > 0.01)
                {
                    GUI.color = Color.cyan;
                    int num2 = (int)num;
                    string name = lootItem.name;
                    string text = string.Format("{0} - {1}m", name, num2);
                    GUI.Label(new Rect(vector.x - 50f, (float)Screen.height - vector.y, 100f, 50f), text);
                }
            }
        }
    }


    private void DrawPlayers()
    {
        try
        {
            foreach (Player player in _players.Where(plr => plr != null))
            {
                if (player == null)
                {
                    File.WriteAllText("greske.txt", "Here we go with player null error.");
                    return;
                }

                if (player.Transform == null)
                {
                    File.WriteAllText("greske.txt", "Player.Transform is null error");
                    return;
                }
                if (Camera.main == null)
                {
                    File.WriteAllText("greske.txt", "Camera.main is null error");
                    return;
                }

                float distanceToObject = Vector3.Distance(Camera.main.transform.position, player.Transform.position);
                Vector3 playerBoundingVector = new Vector3(Camera.main.WorldToScreenPoint(player.Transform.position).x, Camera.main.WorldToScreenPoint(player.Transform.position).y, Camera.main.WorldToScreenPoint(player.Transform.position).z);

                if (distanceToObject <= _maxDrawingDistance && playerBoundingVector.z > 0.01 && playerBoundingVector.x > -5 && playerBoundingVector.y > -5 && playerBoundingVector.x < 1920 && playerBoundingVector.y < 1080)
                {
                    var playerHeadVector = new Vector3(
                        Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).x,
                        Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y,
                        Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).z);

                    float boxVectorX = Camera.main.WorldToScreenPoint(player.Transform.position).x;
                    float boxVectorY = Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y + 10f;
                    float boxHeight = Math.Abs(Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y - Camera.main.WorldToScreenPoint(player.Transform.position).y) + 10f;
                    float boxWidth = boxHeight * 0.65f;

                    Color guiBackup = GUI.color;
                    var playerColor = GetPlayerColor(player.Side);
                    var isAi = player.Profile.Info.RegistrationDate <= 0;
                    var deadcolor = player.HealthController.IsAlive ? playerColor : Color.gray;

                    GUI.color = deadcolor;
                    GuiHelper.DrawBox(boxVectorX - boxWidth / 2f, (float)Screen.height - boxVectorY, boxWidth, boxHeight, deadcolor);
                    GuiHelper.DrawLine(new Vector2(playerHeadVector.x - 2f, (float)Screen.height - playerHeadVector.y), new Vector2(playerHeadVector.x + 2f, (float)Screen.height - playerHeadVector.y), deadcolor);
                    GuiHelper.DrawLine(new Vector2(playerHeadVector.x, (float)Screen.height - playerHeadVector.y - 2f), new Vector2(playerHeadVector.x, (float)Screen.height - playerHeadVector.y + 2f), deadcolor);


                    var playerName = isAi ? "[BOT]" : player.Profile.Info.Nickname;
                    string playerDisplayName = player.HealthController.IsAlive ? playerName : playerName + " [MRTAV]";
                    string playerText = $"{playerDisplayName} [{(int)distanceToObject}]M";

                    var playerTextVector = GUI.skin.GetStyle(playerText).CalcSize(new GUIContent(playerText));
                    GUI.Label(new Rect(playerBoundingVector.x - playerTextVector.x / 2f, (float)Screen.height - boxVectorY - 20f, 300f, 50f), playerText);
                    GUI.color = guiBackup;
                }
            }
        }
        catch (Exception ex)
        {
            File.WriteAllText("greske.txt", ex.ToString());
        }
    }



    private Color GetPlayerColor(EPlayerSide side)
    {
        switch (side)
        {
            case EPlayerSide.Bear:
                return Color.red;
            case EPlayerSide.Usec:
                return Color.blue;
            case EPlayerSide.Savage:
                return Color.yellow;
            default:
                return Color.yellow;
        }
    }

    public void DrawESPMenu()
    {
        GUI.color = Color.black;
        GUI.Box(new Rect(100f, 100f, 190f, 300f), "");
        GUI.color = Color.white;
        GUI.Label(new Rect(180f, 110f, 150f, 20f), "V-C 1.5");
        _showPlayersESP = GUI.Toggle(new Rect(110f, 140f, 120f, 20f), _showPlayersESP, " ESP IGRACI");
        _showExfiljewEPS = GUI.Toggle(new Rect(110f, 160f, 120f, 20f), _showExfiljewEPS, " IZLAZI ESP");
        _showItemESP = GUI.Toggle(new Rect(110f, 200f, 120f, 20f), _showItemESP, " LOOT ESP");
        _crosshair = GUI.Toggle(new Rect(110f, 240f, 120f, 20f), _crosshair, " NISAN");
        _isConfigMenuActive = GUI.Toggle(new Rect(110f, 260f, 120f, 20f), _isConfigMenuActive, " POSTAVKE");
    }

    private void DrawConfigMenu()
    {
        GUI.color = Color.black;
        GUI.Box(new Rect(400f, 100f, 190f, 300f), "");
        GUI.color = Color.white;
        GUI.Label(new Rect(480f, 110f, 150f, 20f), "POSTAVKE");
        GUI.Label(new Rect(410f, 140f, 150f, 20f), "ESP DALJINA: " + _maxDrawingDistance);
        _maxDrawingDistance = GUI.HorizontalSlider(new Rect(410f, 170f, 150f, 20f), _maxDrawingDistance, 0f, 1500f);
        GUI.Label(new Rect(410f, 200f, 150f, 20f), "LOOT DALJINA: " + _maxLootDrawingDistance);
        _maxLootDrawingDistance = GUI.HorizontalSlider(new Rect(410f, 230f, 150f, 20f), _maxLootDrawingDistance, 0f, 1500f);
        _showValuables = GUI.Toggle(new Rect(410f, 260f, 150f, 20f), _showValuables, "  VRIJEDAN LOOT");
    }

    private double GetDistance(double x1, double y1, double x2, double y2)
    {
        return Math.Sqrt(Math.Pow(x2 - x1, 2.0) + Math.Pow(y2 - y1, 2.0));
    }
}

}

推荐答案

请提供更多信息? 我认为"Camera.Main null"是由您的场景中的主摄像头缺失引起的,但是我不知道是因为我不知道我们的场景现在看起来如何. 我也喜欢这个:

coud you give more information? I think "Camera.Main null" is caused by a missung main camera in your scene, but i dunno cause i dont know how our scene is looking right now. also i fond this:

File.WriteAllText("greske.txt","Camera.main为空错误"); [在DrawPlayers中]

File.WriteAllText("greske.txt", "Camera.main is null error"); [in DrawPlayers]

所以我的问题是,如果您要说的是一个,还是运行unity时出现真正的控制台错误?如果可以的话,请制作一些屏幕截图,将对您有所帮助.

so my question is, if u mean that one, or a real console error when running unity? if you can, please make some screenshot, would be helpfull.

这篇关于修复相机的任何可能性null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆