Cs0117 как исправить

По туториалу собираю Tower Defence на Unity для себя и на моменте создания скрипта для башен получаю ошибки CS0117 и CS0122.
Туториал супер наглядный, там просто пишется код и дополнительно объясняется что к чему.
По итогу его написания у человека все работает, у меня ошибки.
Дословно выглядят они так:

1) AssetsScriptsTower.cs(26,41): error CS0117: ‘Enemies’ does not contain a definition for ‘enemies’

2) AssetsScriptsTower.cs(51,21): error CS0122: ‘Enemy.takeDamage(float)’ is inaccessible due to its protection level

Сам Код:

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

public class Tower : MonoBehaviour
{
   [SerializeField] private float range;
   [SerializeField] private float damage;
   [SerializeField] private float timeBetweenShots; // Time in seconds between shots

    private float nextTimeToShoot;

    private GameObject currentTarget;

    private void Start()
    {
        nextTimeToShoot = Time.time;
    }

    private void updateNearestEnemy()
    {
    GameObject currentNearestEnemy = null;

    float distance = Mathf.Infinity;

    foreach(GameObject enemy in Enemies.enemies)
        {
            float _distance = (transform.position - enemy.transform.position).magnitude;

            if (_distance < distance)
            {
                distance = _distance;
                currentNearestEnemy = enemy;
            }
        }

    if (distance <= range)
        {
            currentTarget = currentNearestEnemy;
        }
    else
        {
            currentTarget = null;
        }
    }

    private void shoot()
    {
        Enemy enemyScript = currentTarget.GetComponent<Enemy>();

        enemyScript.takeDamage(damage);
    }

    private void Update()
    {
        updateNearestEnemy();

        if (Time.time >= nextTimeToShoot)
        {
            if (currentTarget != null)
            {
                shoot();
                nextTimeToShoot = Time.time + timeBetweenShots;
            }
        }
    }
}


error CS0117: ‘Time’ does not contain a definition for ‘deltatime’

Показываю скриншот ошибки и текст ошибки и скриншот кода который писал. немогу исправить эту ошибку ,как я понял она возникает из-за того что “delta.time” устарела и нужно использовать другой текст для этой функции.Кто может помочь ? я могу ошибаться.Если знаете как решить опишите пожалуйста.

unity

задан 11 авг 2020 в 20:01

Frend Game Company's user avatar

Ошибка говорит что у класса Time отсутствует свойство deltatime.
Попробуйте так: Time.deltaTime.

ответ дан 11 авг 2020 в 20:06

eccs0103's user avatar

eccs0103eccs0103

2,6562 золотых знака13 серебряных знаков28 бронзовых знаков

5

Гуру77777

-40 / 1 / 0

Регистрация: 14.11.2018

Сообщений: 627

1

29.03.2019, 19:19. Показов 7435. Ответов 1

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Не работает. Как исправить? error CS0117: “object” не содержит определение для “Dispose”.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace WindowsFormsApp1
{
    partial class Form1
    {
        /// <summary>
        /// Обязательная переменная конструктора.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
 
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
       void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }



0



Администратор

Эксперт .NET

15540 / 12520 / 4978

Регистрация: 17.03.2014

Сообщений: 25,393

Записей в блоге: 1

30.03.2019, 00:42

2

Лучший ответ Сообщение было отмечено Гуру77777 как решение

Решение

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



1



C# Compiler Error

CS0117 – ‘type’ does not contain a definition for ‘identifier’

Reason for the Error

This error can be seen when you are trying to reference an identifier that does not exist for that type. An example of this when you are trying to access a member using base. where the identifier doesnot exist in the base class.

For example, the below C# code snippet results with the CS0117 error because the the identifier Field1 is accesses using base.Field1 but it doesnot exist in the base class “Class1”.

namespace DeveloperPublishNamespace
{
    public class Class1
    {

    }
    public class Class2 : Class1
    {
        public Class2()
        {
            base.Field1 = 1;
        }
    }
    public class DeveloperPublish
    {
        public static void Main()
        {
            
        }
    }
}

Error CS0117 ‘Class1’ does not contain a definition for ‘Field1’ ConsoleApp1 C:UsersSenthilsourcereposConsoleApp1ConsoleApp1Program.cs 11 Active

C# Error CS0117 – 'type' does not contain a definition for 'identifier'

Solution

To fix the error code CS0117, remove the references that you are trying to make which is not defined in the base class.

Как исправить ошибки CS0117 и CS0122?

По туториалу собираю Tower Defence на Unity для себя и на моменте создания скрипта для башен получаю ошибки CS0117 и CS0122.
Туториал супер наглядный, там просто пишется код и дополнительно объясняется что к чему.
По итогу его написания у человека все работает, у меня ошибки.
Дословно выглядят они так:

1) AssetsScriptsTower.cs(26,41): error CS0117: ‘Enemies’ does not contain a definition for ‘enemies’

2) AssetsScriptsTower.cs(51,21): error CS0122: ‘Enemy.takeDamage(float)’ is inaccessible due to its protection level

  • Вопрос задан 13 мая 2022
  • 166 просмотров

Простой 1 комментарий

1 — у тебя в классе Enemies нет члена enemies. Возможно его нет совсем, а возможно у тебя опечатка.
2 — у тебя в классе Enemy есть метод takeDamage, но он не публичный

PS: На будущее:
— отмечай комментарием, на какой именно строке сработала ошибка
— не забывай заворачивать код в тег — это сильно упростит чтение для тех, кто попробует решить твой вопрос
— перед тем как задавать вопрос — попробуй загуглить в чём суть ошибки, и попробуй сам решить (CS0117, CS0122)
— перед тем как начинать писать на юнити, лучше всё-таки хоть самые основы C# изучить. Тут как в математике — без понимания простых вещей, ты гарантированно не сможешь понять сложные вещи.

Источник

Почему я получаю ошибку компилятора CS0117 — «имя класса» не содержит определения для «имени метода»

Я пытаюсь вызвать метод load_words() из класса Words в методе Main() , и он дает мне эту ошибку:

Error CS0117 ‘Words’ does not contain a definition for ‘load_words’

Как мне вызвать эту функцию?

Разместите свой код.

Вам нужно убедиться, что вы используете одно и то же пространство имен. У вас могут быть два разных класса, которые называются словами и используют неправильный. Или верхние / нижние буквы в названии слов класса разные, поэтому на самом деле у вас есть два разных класса.

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

-Если вы используете его в другом пространство имен и пытаетесь использовать dll другого пространства имен, тогда он не будет ссылаться на этот метод.

-Возможно, вам потребуется перестроить проект

-если не пытайтесь создать класс с именем пространства имен, это может решить вашу проблему

Компилятор не сообщает вам, что не может найти класс, Words . Он сообщает вам, что не может найти метод.

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

Так что наиболее вероятная причина — это опечатка при вызове метода. Убедитесь, что вы правильно указали название метода. Это чувствительно к регистру. Если вы точно не сопоставили имя метода, то вызываемый вами метод на самом деле не существует, поэтому компилятор сообщает, что класс не содержит этого метода.

Другая возможность состоит в том, что у вас есть два класса с именем Words . Один находится в том же пространстве имен, что и ваш метод Main , а другой — нет. Если тот, у которого есть метод load_words , находится в другом пространстве имен, то компилятор смотрит на класс, у которого не есть этот метод.

Источник

Error cs0117 console не содержит определение для readline

Опытный

Профиль
Группа: Участник
Сообщений: 297
Регистрация: 21.1.2009

Репутация: нет
Всего: 1

VOX
Дата 23.12.2009, 10:02 (ссылка) | (нет голосов) Загрузка .
Код
sarr = File.ReadAllLines(@»C:/data»);

прекрасно работает под студией, но в блэнде выдает:
error CS0117: ‘System.IO.File’ не содержит определение для ‘ReadAllLines’
При это компиляции не происходит.
Пространство имен using System.IO; — подключил, подскажите пожалуйста,
в чём может заключаться проблема?
Спасибо!

dazy
Дата 23.12.2009, 11:23 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8

Цитата(VOX @ 23.12.2009, 13:02)
Здравствуйте!
Этот код:
Код
sarr = File.ReadAllLines(@»C:/data»);

прекрасно работает под студией, но в блэнде выдает:
error CS0117: ‘System.IO.File’ не содержит определение для ‘ReadAllLines’
При это компиляции не происходит.
Пространство имен using System.IO; — подключил, подскажите пожалуйста,
в чём может заключаться проблема?
Спасибо!

«Под студией» это в WinForms?

SilverLight не может обращаться к диску пользователя как угодно разработчику. SilverLight работает в так называемой песочнице, и работа с диском ограничена IsolatedStorage.
В общем писать/читать только в определенную папку. В 4 версии вроде будет доступ к Моим документам, и то только с разрешения пользователя. В общем, курим IsolatedStorage.

Опытный

Профиль
Группа: Участник
Сообщений: 297
Регистрация: 21.1.2009

Репутация: нет
Всего: 1

Я вас понял, спасибо за наводку!

Добавлено через 29 секунд
+ не могу поставить, т.к. ставил сегодня, я завтра проставлю, спасибо!

VOX
Дата 23.12.2009, 11:28 (ссылка) | (нет голосов) Загрузка .
dazy
Дата 23.12.2009, 11:50 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8

кого поставить?
Сильверлайт имеет все инструменты для доступа в IsolatedStorage.

Опытный

Профиль
Группа: Участник
Сообщений: 297
Регистрация: 21.1.2009

Репутация: нет
Всего: 1

VOX
Дата 23.12.2009, 11:51 (ссылка) | (нет голосов) Загрузка .
dazy
Дата 23.12.2009, 12:10 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8

Опытный

Профиль
Группа: Участник
Сообщений: 297
Регистрация: 21.1.2009

Репутация: нет
Всего: 1

VOX
Дата 23.12.2009, 15:47 (ссылка) | (нет голосов) Загрузка .
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »

[ Время генерации скрипта: 0.1285 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Добавить комментарий