Ошибка пакета Unity «не удалось найти тип пространства имен»

#c# #unity3d #namespaces #assets

#c# #unity-игровой движок #пространства имен #ресурсы

Вопрос:

Привет, я использую пакет Unity под названием «Movement Animset Pro v1.693.unitypackage» для перемещения персонажа unity, когда я импортирую пакет в unity, все работает нормально, за исключением файла сценария, он выдает мне ошибки по всему коду, я использую последнюю версию unity, и вот код

// (c) Авторские права HutongGames, LLC 2010-2011. Все права защищены.

     using UnityEngine;

    namespace HutongGames.PlayMaker.Actions
    {


[ActionCategory(ActionCategory.Transform)]
[Tooltip("Moves a Game Object towards a Target. Optionally sends an event when successful. Optionally set when to update, during regular update, lateUpdate or FixedUpdate. The Target can be specified as a Game Object or a world Position. If you specify both, then the Position is used as a local offset from the Object's Position.")]
public class MoveTowards2 : FsmStateAction
{
    public enum UpdateType {Update,LateUpdate,FixedUpdate};

    [RequiredField]
    public FsmOwnerDefault gameObject;

    public FsmGameObject targetObject;

    public FsmVector3 targetPosition;

    public FsmBool ignoreVertical;

    [HasFloatSlider(0, 20)]
    public FsmFloat maxSpeed;

    [HasFloatSlider(0, 5)]
    public FsmFloat finishDistance;

    public FsmEvent finishEvent;

    public UpdateType updateType;


    public override void Reset()
    {
        gameObject = null;
        targetObject = null;
        maxSpeed = 10f;
        finishDistance = 1f;
        finishEvent = null;
        updateType = UpdateType.Update;
    }

    public override void OnUpdate()
    {
        if (updateType == UpdateType.Update)
        {
            DoMoveTowards();
        }
    }

    public override void OnLateUpdate()
    {
        if (updateType == UpdateType.LateUpdate)
        {
            DoMoveTowards();
        }
    }

    public override void OnFixedUpdate()
    {
        //if (updateType == UpdateType.FixedUpdate)
        //{
            DoMoveTowards();
        //}
    }

    void DoMoveTowards()
    {
        var go = Fsm.GetOwnerDefaultTarget(gameObject);
        if (go == null)
        {
            return;
        }

        var goTarget = targetObject.Value;
        if (goTarget == null amp;amp; targetPosition.IsNone)
        {
            return;
        }

        Vector3 targetPos;
        if (goTarget != null)
        {
            targetPos = !targetPosition.IsNone ? 
                goTarget.transform.TransformPoint(targetPosition.Value) : 
                goTarget.transform.position;
        }
        else
        {
            targetPos = targetPosition.Value;
        }

        if (ignoreVertical.Value)
        {
            targetPos.y = go.transform.position.y;
        }

        go.transform.position = Vector3.MoveTowards(go.transform.position, targetPos, maxSpeed.Value * Time.deltaTime);

        var distance = (go.transform.position - targetPos).magnitude;
        if (distance < finishDistance.Value)
        {
            Fsm.Event(finishEvent);
            Finish();
        }
    }

}
}
  

и вот ошибки

 AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(11,30): error CS0246: The type or namespace name 'FsmStateAction' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(9,3): error CS0246: The type or namespace name 'ActionCategoryAttribute' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(9,3): error CS0246: The type or namespace name 'ActionCategory' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(9,18): error CS0103: The name 'ActionCategory' does not exist in the current context
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(10,3): error CS0592: Attribute 'Tooltip' is not valid on this declaration type. It is only valid on 'field' declarations.
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(35,24): error CS0115: 'MoveTowards2.Reset()': no suitable method found to override
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(45,24): error CS0115: 'MoveTowards2.OnUpdate()': no suitable method found to override
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(53,24): error CS0115: 'MoveTowards2.OnLateUpdate()': no suitable method found to override
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(61,24): error CS0115: 'MoveTowards2.OnFixedUpdate()': no suitable method found to override
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(15,4): error CS0246: The type or namespace name 'RequiredFieldAttribute' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(15,4): error CS0246: The type or namespace name 'RequiredField' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(16,10): error CS0246: The type or namespace name 'FsmOwnerDefault' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(18,10): error CS0246: The type or namespace name 'FsmGameObject' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(20,10): error CS0246: The type or namespace name 'FsmVector3' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(22,10): error CS0246: The type or namespace name 'FsmBool' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(24,4): error CS0246: The type or namespace name 'HasFloatSliderAttribute' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(24,4): error CS0246: The type or namespace name 'HasFloatSlider' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(25,10): error CS0246: The type or namespace name 'FsmFloat' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(27,4): error CS0246: The type or namespace name 'HasFloatSliderAttribute' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(27,4): error CS0246: The type or namespace name 'HasFloatSlider' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(28,10): error CS0246: The type or namespace name 'FsmFloat' could not be found (are you missing a using directive or an assembly reference?)
AssetsMovementAnimsetProPlayMakerAdditionalActionsPlayMakerActionsMoveTowards2.cs(30,10): error CS0246: The type or namespace name 'FsmEvent' could not be found (are you missing a using directive or an assembly reference?)
  

и есть еще 5 скриптов с теми же ошибками .. пожалуйста, помогите

Ответ №1:

Поскольку в ошибке говорится, что программа не находит имена, подобные ‘FsmStateAction’, найдите в своих ресурсах это имя и найдите скрипт, который его содержит, затем поместите пространство имен скрипта в начало вашего кода, например:

 using someNamespace;
  

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