ЭТО ВТОРОЙ СКРИПТ В НЕГО НУЖНО ВЫЗВАТЬ КЛАСС (STOP)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public Rigidbody2D rb;
public Vector2 moveVector;
public float speed = 3.5f;
public float jumpForce = 6f;
public Animator anim;
public SpriteRenderer sr;
public bool onGround;
public Transform GroundCheck;
public float checkRadius = 0.5f;
public LayerMask Ground;
public static Player Instance { get; set; }
[SerializeField] private int lives = 5;
Stop это не класс, а метод. Если они прикреплены к одному объекту, то можно получить ком>понент через GetComponent, как вы это делаете с rigidbody. В вашем случае это -
GetComponent<combatPlaye>(), а далее уже у закэшированного компонента вызывать метод, который вам нужен.
public class Class1 : MonoBehaviour
{
public void Log(string message)
{
Debug.Log(message);
}
}
[RequireComponent(typeof(Class1))]
public class Class2 : MonoBehaviour
{
private Class1 _class1;
private void Start()
{
_class1 = GetComponent<Class1>();
_class1.Log("ABC");
}
}
Есть класс Class1, у него метод Log. Class1 висит на геймобжекте. Я хочу вызвать этот метод из другого класса Class2, который тоже висит на том же самом геймобжекте. Соответственно, я определяю поле типа Class1 с названием _class1 и в методе старт присваиваю ему значение, вызвав GetComponent(). GetComponent() Проверяет, есть ли на объекте компонент типа(класса) T и возвращает этот компонент, если он присутствует. Всё. больше вызывать GetComponent не нужно, так как компонент у нас есть и он закэширован в поле _class1. Далее просто вызываю метод Log у закэшированного объекта _class1. Если это все для вас сложно, то вам сюда https://ulearn.me/ для изучения c# или сюда https://learn.unity.com/ для изучения unity.
Hiniks YouTube, [RequireComponent(typeof(Class1))] нужно для того, чтобы на геймобжекте, к которому прикреплен Class2 всегда был прикреплен компонент Class1
привет, я сделал все также как и у вас но почему то ничего не вышло такая ошибка Assets\scripts\Player.cs(90,13): error CS0103: The name 'Stop' does not exist in the current context
[RequireComponent(typeof(combatPlaye))]
public class Player : MonoBehaviour
{
public Rigidbody2D rb;
public Vector2 moveVector;
public float speed = 3.5f;
public float jumpForce = 6f;
public Animator anim;
public SpriteRenderer sr;
public bool onGround;
public Transform GroundCheck;
public float checkRadius = 0.5f;
public LayerMask Ground;
public static Player Instance { get; set; }
[SerializeField] private int lives = 5;
Hiniks YouTube, void Stopper() в этом методе вы пытаетесь вызвать метод Stop. Но вы пытаетесь вызвать его из текущего класса, т.е. из класса Player. В вашем классе Player нет метода Stop. Вам нужно вызвать метод Stop из класса combatPlaye? тогда вместо Stop() нужно написать _combatPlaye.Stop(). Если что-то не так, напишите, какой метод из какого класса вам нужно вызвать. Но отвечу я только завтра.