Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

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

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

Читаю книжку 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, 14:42   #2
newptc
Пользователь
 
Аватар для newptc
 
Регистрация: 21.07.2019
Сообщений: 11
Репутация: -28
По умолчанию

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

Цитата:
Сообщение от 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, 15:14   #4
newptc
Пользователь
 
Аватар для newptc
 
Регистрация: 21.07.2019
Сообщений: 11
Репутация: -28
По умолчанию

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


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

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО]: [C#]: когда пытаюсь присвоить переменной значение которое вводит пользователь, мне выдается ошибка мол ConvertToInt(); неприемлемо в данном контексте GRUB_666 Помощь студентам 0 07.01.2017 21: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 21:49


18:35.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.