Не работает кнопка в Unity
Делаю модель самолета на С#, Unity.
Хочу добавить кнопку, при клике на которую увеличивается параметр мощности в пять раз.
На данный момент создала кнопку, привязала к ней функцию. Пыталась вывести хотя бы сообщение в консоль при клике на нее, но ничего не получилось(
Подскажите еще пожалуйста правильно ли я импортировала класс во втором файле?
Заранее благодарю за ответ.
using System;
using UnityEngine;
using AircraftSimulator;
namespace AircraftSimulator {
public class Forsage : MonoBehaviour {
public bool forsage;
public void ButtonForsage( )
{
forsage = true;
Console.WriteLine("111");
Console.ReadKey() ;
}
}
}
using System;
using UnityEngine;
using static AircraftSimulator.Forsage;
namespace AircraftSimulator {
public class Engine : Component {
private double _currentPower;
AircraftSimulator.Forsage Forsage = new AircraftSimulator.Forsage();
public Engine(double mass, string name, Vector3 relativePosition, double maxPower = 100) {
_currentPower = 0;
MaxPower = 400;
Mass = mass;
Name = name;
RelativePosition = relativePosition;
}
public double CurrentPower {
get => _currentPower;
set {
if (Forsage.forsage) {
_currentPower = 5 * Math.Max(Math.Min(MaxPower, value), 0);
}
else {
_currentPower = Math.Max(Math.Min(MaxPower, value), 0);
}
}
}
public double MaxPower { get; set; }
}
}
Ответы (2 шт):
Если хотите, увидеть что-то в консоли unity, пишите туда Debug.Log("111");.
Math.Max(Math.Min(max, value), min);
Для этого есть clamp:
Mathf.Clamp(value, min, max);
double обычно не испольуют, нет нужды в такой точности, float.
Импортируешь не правильно:
static?- только
using AircraftSimulator;, без.Forsage - твой код и так уже внутри этого неймспейса, без всяких
using.
Не пользуйся неймспейсами.
Думаю вы хотите что-то типа такого. Ещё лучше будет хранить не флаг вашего "ускорения", а его модификатор, равный 1 при нормальных условиях. Не знаю как сейчас, но раньше у юнити были проблемы с не-автосвойствами и ваши геттеры и сеттеры вряд ли отработали, поэтому для настройки из инспектора лучше воспользоваться полем.
using System;
using UnityEngine;
namespace AircraftSimulator
{
public class Engine : MonoBehaviour
{
private const float MaxPower = 400; // Ваше значение
[Range(0, MaxPower)]
[SerializeField]
private float _currentPower;
private bool forsage;
public void ButtonForsage()
{
forsage = true;
}
public double CurrentPower
{
get => _currentPower * (forsage ? 5 : 1);
set => _currentPower = Math.Clamp(value, 0, MaxPower);
}
}
}
