using UnityEngine;
public class ClickMoveExample : MonoBehaviour {
public Transform target;
public float moveDelta = 0.1f;
void Update() {
if (Input.GetMouseButtonDown(0))
transform.position = Vector3.MoveTowards(transform.position, target.position, moveDelta);
}
}
hit.collider.transform.parent.GetComponent<DoorScript>().count_v();
hit.collider.transform.root.GetComponent<DoorScript>().count_v();
hit.transform.root.GetComponent<DoorScript>().count_v();
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class user : MonoBehaviour {
public float Distens = 0f;
void Update() {
if (Input.GetKeyDown(KeyCode.E)) {
Ray ray = new Ray (transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Distens))
if (hit.transform.root.TryGetComponent(out DoorScript door))
door.count_v();
}
}
}
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
createApple();
GameObject apple = GameObject.Find("apple");
oneApple = true;
}
}
if (oneApple) {
apple.transform.position -= new Vector3(0, 0, 5 * Time.deltaTime);
if (apple.transform.position.z < -15) {
Destroy(apple);
oneApple =false;
}
}
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
createApple();
apple = GameObject.Find("apple");
oneApple = true;
}
}
// Данный код
GameObject createApple() {
GameObject result = new GameObject("apple");
GameObject apple = null;
apple = apllePrefab;
Vector3 applePos = transform.position + new Vector3 (1, 0.5f,1);
if (apple != null) {
GameObject go = Instantiate(apllePrefab, applePos,Quaternion.identity);
}
return result;
}
// Можно заменить на такой без потери смысла
GameObject сreateApple() {
var applePos = transform.position + new Vector3(1, 0.5f, 1);
return Instantiate(apllePrefab, applePos, Quaternion.identity);
}
// Далее в этом фрагменте вы сначала помещаете объект на сцену, а затем пытаетесь его найти
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
createApple();
apple = GameObject.Find("apple");
oneApple = true;
}
}
// Не то чтобы метод GameObject.Find вообще не стоило
// никогда использовать, но обычно есть более практичные
// способы это сделать. Например передать прямую ссылку:
if (!oneApple) {
if (Input.GetKeyUp(KeyCode.Q)) {
apple = сreateApple();
oneApple = true;
}
}
public GameObject text; // ссылка на внутреннее текстовое поле
// ...
public void OnClick() { // привязать к кнопке
text.SetActive(!text.activeSelf); // переключает видимость
}
// очередь команд
private readonly ConcurrentQueue<Action> _Actions = new ConcurrentQueue<Action>();
// получаете сообщение - ставите в очередь
private void OnMessage(object sender, MessageEventArgs e) {
_Actions.Enqueue(() => ReadResponse(e.Data));
}
// каждое обновление экрана запускаем всю очередь
private void Update() {
while (_Actions.Count > 0)
if (_Actions.TryDequeue(out var action))
action?.Invoke();
}
// вот тут вы уже можете влиять на тот же текст
private void ReadResponse(string data) {
// ваш код
}
using UnityEngine;
public class DontDestroyMe : MonoBehaviour {
private void Start() {
DontDestroyOnLoad(this.gameObject);
}
}
using UnityEngine;
public class SimpleTrigger : MonoBehaviour {
public GameObject button;
private void OnTriggerEnter2D(Collider2D c) {
if (c.gameObject.tag == "Player")
button.SetActive(true);
}
}