Any*_*nya -2 c# unity-game-engine
您如何找到自某个变量发生变化以来的时间?以一个布尔变量为例,您如何找到自上次更改以来的时间?我想使用布尔变量作为触发器(当它为真时激活触发器),但仅在经过一段精确的,恒定的时间(例如0.5秒)后才更改为真(它只能从false更改为真正).
这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class hitRegistration : MonoBehaviour
{
AudioSource hitSound;
private bool hitState = false;
// Use this for initialization
void Start()
{
hitSound = gameObject.GetComponent<AudioSource>();
}
void OnMouseOver()
{
Debug.Log("Mouse is over game object.");
if (Input.GetKey(KeyCode.X) && hitState == false)
{
hitSound.Play();
hitState = true;
}
}
private void OnMouseExit()
{
Debug.Log("Mouse is no longer over game object.");
if (hitState == true)
{
// sound clip gets cut if the cursor leaves before its finished.
Destroy(gameObject);
}
}
// Update is called once per frame
void Update()
{
}
}
Run Code Online (Sandbox Code Playgroud)
"OnMouseOver()"只是将鼠标放在相关游戏对象上时调用的函数.我想延迟销毁游戏对象,直到某个时间过去.
首先,正如评论中所指出的,你可能正试图以错误的方式解决这个问题而你可能会问一个"XY"问题 - 你问一个关于提议的坏解决方案的问题,而不是问一个问题关于你面临的实际问题.
要回答您实际问过的问题,无论好坏:没有办法将行为与读取或写入C#中的变量相关联,但您可以将行为与属性相关联:
private bool hitState; // The "backing store".
private bool HitState
{
get
{
return hitState;
}
set
{
hitState = value;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你会使用HitState而不是hitState整个课程的其余部分.
现在,您可以添加在读取或写入属性时发生的任何逻辑:
private DateTime hitStateTime = default(DateTime);
private bool hitState; // The "backing store".
private bool HitState
{
get
{
return hitState;
}
set
{
hitState = value;
hitStateSet = DateTime.Now;
}
}
Run Code Online (Sandbox Code Playgroud)
现在你知道它何时被设置.等等.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |