【发布时间】:2021-01-18 07:14:31
【问题描述】:
我正在尝试将我的游戏设置为有玩家的地方,您触摸屏幕以投掷物体,一旦该物体与另一个物体发生碰撞,得分就会增加 1 分。我向实例化对象添加了一个脚本,该脚本在检测到冲突时向控制台打印一条消息。该脚本还引用了另一个保存 score 变量的脚本。
脚本是:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CrackEgg : MonoBehaviour
{
public Stats stats;
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "BreakEgg")
{
stats.DepositMoney();
Debug.Log("I am actually working");
}
}
}
统计脚本是:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Stats : MonoBehaviour
{
[Header("Bank")]
public int bankAmount;
public int depositAmount;
public void DepositMoney()
{
bankAmount += depositAmount;
}
}
我知道我必须将 Stats 脚本附加到一个游戏对象(我将它附加到一个空的游戏对象)。抛出的对象是一个预制件,并具有 CrackEgg 脚本作为组件。我尝试将 Stats 游戏对象拖到 CrackEgg 脚本的 Stats 字段中,但它不起作用。它仅在 Stats 游戏对象也是预制件时才有效。我遇到的主要问题是,即使我在层次结构中有 Stats 游戏对象预制件,当我测试代码时,bankAmount 变量根本不会增加。总而言之,我希望实例化对象检测到碰撞,然后从 Stats 脚本运行 DepositMoney() 方法,但我无法找到使其工作的方法。
【问题讨论】:
标签: c# visual-studio unity3d visual-studio-2019