Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.08.2019, 19:22   #1
DanDiablo
Пользователь
 
Аватар для DanDiablo
 
Регистрация: 25.08.2015
Сообщений: 55
Злость Определить объект-одиночу или имя не существует в данном контексте

Доброго времени суток, дамы и господа!

Я был маленько веб-мастером, сделал несколько сайтов и на данном форуме есть парочка тем на эту тему, так что с программированием знаком малость.

Мне стало скучно и с недавних пор я решил попробовать делать игры.

И так, к вопросу!

Читаю книжку unity и C# Геймдев от идеи до реализации.
В третьей части книжки идет практика прототипа игр, на второй игре у меня косяк. Толи в книжке опечатка, то я дурак, не пойму пока что.

Вот код:
Код:

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

public enum GameMode
{
    idle,
    playing,
    levelEnd
}
public class MissionDemolition : MonoBehaviour
{

    [Header("Set in Inspector")]

    public Text uitLevel;//Ссылка на объект UIText_level
    public Text uitShots; //Ссылка на объект UIText_shots
    public Text uitButton; //Ссылка на дочерний объект Text в UIButton_View
    public Vector3 castlePos;//Местоположение замка
    public GameObject[] castles;//массив замков

    [Header("Set Dynamically")]
    public int level;//Текущий уровень
    public int levelMax;//Количество уровней
    public int shotsTaken;//Выстрелы
    public GameObject castle;//Текущий замок
    public GameMode mode = GameMode.idle;//Режим игры
    public string showing = "Show slingshot";//Режим FollowCam

    // Start is called before the first frame update
    void Start()
    {
        S = this; //Определить объект-одиночу
        level = 0;
        levelMax = castles.Length;
        StartLevel();
        
    }

    void StartLevel()
    {
        //Уничтожить прежний замок, если он существует
        if (castle != null)
        {
            Destroy(castle);
        }
        //Уничтожить прежние снаряды, если они существуют
        GameObject[] gos = GameObject.FindGameObjectsWithTag("Projectile");
        foreach (GameObject pTemp in gos)
        {
            Destroy(pTemp);
        }

        //Создать новый замок
        castle = Instantiate<GameObject>(castles[level]);
        castle.transform.position = castlePos;
        shotsTaken = 0;

        //Переустановить камеру в начальную позицию
        SwitchView("Show Both");
        ProjectileLine.S.Clear();

        //Сбросить цель
        Goal.goalMat = false;
        UpdateGUI();
        mode = GameMode.playing;
    }

    void UpdateGUI()
    {
        //Показать данные в элементах UI
        uitLevel.text = "Level: " + (level + 1) + " of " + levelMax;
        uitShots.text = "Shots Taken: " + shotsTaken;
    }

    // Update is called once per frame
    void Update()
    {
        UpdateGUI();

        //Проверить завершение уровня
        if ((mode == GameMode.playing) && Goal.goalMat)
        {
            //Изменить режим, что бы прекратить проверку завершения уровня
            mode = GameMode.levelEnd;

            //Уменьшить масштаб
            SwitchView("Show Both");

            //Начать новый уровень через 2 секунды
            Invoke("NextLevel", 2f);
        }
    }

    void NextLevel()
    {
        level++;
        if (level == levelMax)
        {
            level = 0;
        }
        StartLevel();
    }

    public void SwitchView(string eView = " ")
    {
        if (eView == "")
        {
            eView = uitButton.text;
        }
        showing = eView;

        switch (showing)
        {
            case "Show Slighshot":
                FollowCam.POI = null;
                uitButton.text = "Show Castle";
                break;

            case "Show Castle":
                FollowCam.POI = S.castle;
                uitButton.text = "Show Both";
                break;

            case "Show Both":
                FollowCam.POI = GameObject.Find("ViewBoth");
                uitButton.text = "Show Slingshot";
                break;

        }
    }
    public static void ShotFired()
    {
        S.shotsTaken++;
    }
}
Перепечатывал все точь в точь как в книжке, все перепроверил.

Visual studio жалуется на строчки:

Код:
S = this; //Определить объект-одиночу

FollowCam.POI = S.castle;

S.shotsTaken++;
Говорит, что:

имя S не существует в данном контексте

Из веба знаю, что в javascript так вполне можно и работает:
Код:
S = this;
Почему сейчас на C# не работает и как исправить?

Благодарю за внимание!
DanDiablo вне форума
Старый 04.08.2019, 13:42   #2
newptc
Пользователь
 
Аватар для newptc
 
Регистрация: 21.07.2019
Сообщений: 11
По умолчанию

Вероятно что Visual Studio видит это this как зарезервивованное слово.
Unity addon for Visual Studio у вас установлен?
newptc вне форума
Старый 04.08.2019, 14:09   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Цитата:
Сообщение от DanDiablo Посмотреть сообщение
имя S не существует в данном контексте
Правильно говорит. Или вы можете показать, где оно определено?
Поищем?
Код:
    public Text uitLevel;//Ссылка на объект UIText_level
    public Text uitShots; //Ссылка на объект UIText_shots
    public Text uitButton; //Ссылка на дочерний объект Text в UIButton_View
    public Vector3 castlePos;//Местоположение замка
    public GameObject[] castles;//массив замков

    [Header("Set Dynamically")]
    public int level;//Текущий уровень
    public int levelMax;//Количество уровней
    public int shotsTaken;//Выстрелы
    public GameObject castle;//Текущий замок
    public GameMode mode = GameMode.idle;//Режим игры
    public string showing = "Show slingshot";//Режим FollowCam
Цитата:
Сообщение от newptc Посмотреть сообщение
Вероятно что Visual Studio видит это this как зарезервивованное слово.
И что?

Цитата:
Сообщение от newptc Посмотреть сообщение
Unity addon for Visual Studio у вас установлен?
Как это имеет отношение к вопросу? Вы посты набиваете?
p51x вне форума
Старый 04.08.2019, 14:14   #4
newptc
Пользователь
 
Аватар для newptc
 
Регистрация: 21.07.2019
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Как это имеет отношение к вопросу?
Прямое - чтобы человек знал, и пользовался.


Цитата:
Сообщение от p51x Посмотреть сообщение
Вы посты набиваете?
Набиваю, да. Так же как и вы. Вас это пугает? )
newptc вне форума
Старый 04.08.2019, 14:30   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Это называется флуд и правила к нему относятся неочень.
p51x вне форума
Старый 04.08.2019, 14:37   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от newptc Посмотреть сообщение
Так же как и вы.
В отличие от вас, ваш собеседник пишет по делу
Вадим Мошев вне форума
Старый 04.08.2019, 15:38   #7
newptc
Пользователь
 
Аватар для newptc
 
Регистрация: 21.07.2019
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
В отличие от вас, ваш собеседник пишет:
Цитата:
Сообщение от p51x Посмотреть сообщение
И что?
и поясняет сказанное мной в развернутом виде:
Цитата:
Сообщение от p51x Посмотреть сообщение
Или вы можете показать, где оно определено?
вот и всё отличие.
А вот ставить новичку минус - это от незрелости.
newptc вне форума
Старый 04.08.2019, 15:59   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Что за бред вы несете? Вы говорили про this и аддон. Ни то, ни другое не имеет отношения к теме. Если ваша фраза:
Цитата:
Сообщение от newptc Посмотреть сообщение
Вероятно что Visual Studio видит это this как зарезервивованное слово.
на самом деле означала
Цитата:
переменная S нигде не определена
то вам следует посетить доктора, т.к. вы видите связи там, где их нет.
p51x вне форума
Старый 04.08.2019, 16:45   #9
newptc
Пользователь
 
Аватар для newptc
 
Регистрация: 21.07.2019
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
следует посетить доктора, т.к.
посетите. надеюсь, поможет в освоении S.
newptc вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО]: [C#]: когда пытаюсь присвоить переменной значение которое вводит пользователь, мне выдается ошибка мол ConvertToInt(); неприемлемо в данном контексте GRUB_666 Помощь студентам 0 07.01.2017 20:18
Не существует в данном контексте zaki C# (си шарп) 1 07.12.2013 22:30
Ошибка:"Вложенные запросы в данном контексте не разрешены. Допускаются только скалярные выражения." Андрей9677 Помощь студентам 1 26.06.2013 01:58
SQL server 2005 Вложенные запросы в данном контексте не разрешены студенточка! Помощь студентам 7 22.11.2012 17:40
С# Элемент а1 не существует в данном контексте boris-blade Общие вопросы .NET 4 05.03.2010 20:49