我正在尝试从另一个脚本中访问一个布尔值,我使用了一个自定义的命名空间。这个想法是在检查器中为每个项目设置一个复选框,以确定是否应该设置动画。在武器网格中,我有一个materialoffset animator,如果选中该复选框,它将触发。
using MFPSEditor;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MFPS.Internal.Structures;
namespace MFPS.Addon.Customizer
{
在这个脚本的底部,我有这样的:
[System.Serializable]
public class GlobalCamo
{
public string Name;
[SpritePreview(50)] public Texture2D Preview;
public MFPSItemUnlockability Unlockability;
public string Description;
public bool isAnimated;
public int Price
{
get => Unlockability.Price;
}
public bool animatedCamo()
{
return isAnimated;
}
public bool isFree() { return Price <= 0; }
[HideInInspector] public Sprite m_sprite = null;
public Sprite spritePreview()
{
if (m_sprite == null && Preview != null)
{
m_sprite = Sprite.Create(Preview, new Rect(0, 0, Preview.width, Preview.height), new Vector2(0.5f, 0.5f));
}
return m_sprite;
}
}
}
我正在尝试访问下面脚本中的变量“isAnimated”:
using UnityEngine;
public class MaterialOffsetAnimator : MonoBehaviour
{
// The material that will be animated
Material material;
// The speed at which the offset will be animated
public Vector2 animationSpeed;
void Update()
{
material = GetComponent<Renderer>().material;
if ( isAnimated == true )
{
// Update the material's offset based on the animation speed
material.mainTextureOffset += animationSpeed * Time.deltaTime;
}
else
{
}
}
}
1条答案
按热度按时间h9a6wy2h1#
“isAnimated”是GlobalCamo类中的示例字段,而不是静态字段。如果不引用GlobalCamo示例,则无法访问它。
您可以尝试使用单例来完成此操作:没关系,GlobalCamo并不是从MonoBehaviour继承的,你可以让isAnimated字段本身成为静态的,如下所示:
然后像这样在MaterialOffsetAnimator中访问它:
另外,还有一点:你不需要在条件中使用“== true”和布尔值。如果一个布尔字段的值为true,那么条件的计算结果也为true。