Разбиение скрипта.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Разбиение скрипта.

Сообщение rebeleight4 20 май 2017, 16:04

Добрый день!
Помогите пожалуйста разбить скрипт на 3 части Run, Jump и всё оставшиеся.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class Character : Unit
{
    [SerializeField]
    private int lives = 5;

    public int Lives
    {
        get { return lives; }
        set
        {
            if (value < 5) lives = value;
            livesBar.Refresh();
        }
    }

   
    private LivesBar livesBar;

    [SerializeField]
    private float speed = 3.0F;
    [SerializeField]
    private float jumpForce = 20.0F;

    public bool isGrounded = false;

    private Bullet bullet;

    private CharState State
    {
        get { return (CharState)animator.GetInteger("State"); }
        set { animator.SetInteger("State", (int)value); }
    }

    new public Rigidbody2D rigidbody;
    public Animator animator;
    public SpriteRenderer sprite;

    private void Awake()
    {
        livesBar = FindObjectOfType<LivesBar>();
        rigidbody = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
        sprite = GetComponentInChildren<SpriteRenderer>();

        bullet = Resources.Load<Bullet>("Bullet");
    }

    private void FixedUpdate()
    {
        CheckGround();
    }

    private void Update()
    {
        if (isGrounded) State = CharState.Idle;

        if (Input.GetButtonDown("Fire1")) Shoot();
        if (Input.GetButton("Horizontal")) Run();
        if (isGrounded && Input.GetButtonDown("Jump")) Jump();



    }



    private void Run()
    {
        if (isGrounded) State = CharState.Run;
        Vector3 direction = transform.right * Input.GetAxis("Horizontal");

        transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);

        sprite.flipX = direction.x < 0.0f;


    }

    private void Jump()
    {
        State = CharState.Jump;
        rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);


    }

    private void Shoot()
    {
        Vector3 position = transform.position; position.y += 0.8F;
        Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;

        newBullet.Parent = gameObject;
        newBullet.Direction = newBullet.transform.right * (sprite.flipX ? -1.0F : 1.0F);
    }

    public override void ReceiveDamege()
    {
        Lives--;

        rigidbody.velocity = Vector3.zero;
        rigidbody.AddForce(transform.up * 8.0F, ForceMode2D.Impulse);

        Debug.Log(lives);

        if (Lives <= 0)// если жизней меньше либо равно нулю
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }
    }

    private void CheckGround()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3F);

        isGrounded = colliders.Length > 1;

        if (!isGrounded) State = CharState.Jump;
    }
    private void OnTriggerEnter2D(Collider2D collider)
    {
        Bullet bullet = collider.gameObject.GetComponent<Bullet>();
        if (bullet && bullet.Parent != gameObject)
        {
            ReceiveDamege();

        }


    }
}

public enum CharState
{
    Idle,
    Run,
    Jump

}
Последний раз редактировалось rebeleight4 20 май 2017, 16:49, всего редактировалось 1 раз.
rebeleight4
UNец
 
Сообщения: 29
Зарегистрирован: 16 май 2017, 13:40

Re: Разбиение скрипта.

Сообщение GameWorld 20 май 2017, 16:14

Выдели весь скрипт и нажми кнопочку "CS".
Не мусори.
«Улучшение работающего продукта - приводит к его ухудшению.»
Аватара пользователя
GameWorld
Старожил
 
Сообщения: 620
Зарегистрирован: 11 янв 2011, 03:02
Skype: Alien3DModeller

Re: Разбиение скрипта.

Сообщение samana 20 май 2017, 20:44

Вы хотите сделать из этого скрипта - много скриптов?
Посмотрите паттерн состояние и стратегия.
Так же возможно поможет эта информация о рефакторинге https://refactoring.guru/ru/refactoring/smells
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Разбиение скрипта.

Сообщение rebeleight4 24 май 2017, 21:56

samana писал(а):Вы хотите сделать из этого скрипта - много скриптов?
Посмотрите паттерн состояние и стратегия.
Так же возможно поможет эта информация о рефакторинге https://refactoring.guru/ru/refactoring/smells

Да хотелось бы поделить это скрипт на три части, что бы создать новые модульные связи
rebeleight4
UNец
 
Сообщения: 29
Зарегистрирован: 16 май 2017, 13:40


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 31