public static async void SetXMLValue(string pathToXMLFile, string nodeName1, string nodeName2, string nodeName2Value) {
TextAsset textAsset = Resources.Load<TextAsset>(pathToXMLFile);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(textAsset.text);
XmlNode node = xmlDoc.SelectSingleNode("/" + nodeName1 + "/" + nodeName2);
node.InnerText = nodeName2Value;
await File.WriteAllTextAsync(Application.dataPath + "/Resources/" + pathToXMLFile + ".xml", xmlDoc.OuterXml);
}
PlayerPrefs.GetInt("money");
Money = PlayerPrefs.GetInt("money");
void Update() {
PlayerPrefs.SetInt("money", Money);
}
public void SetMoney(int money) {
// Поменяли
Money = money;
// Сохранили
PlayerPrefs.SetInt("money", Money);
}
private int Money;
// ...
public int GetMoney() {
return Money;
}
Money = PlayerPrefs.GetInt("money", 1);
using UnityEngine;
public class MoneyScriptDemo : MonoBehaviour {
private int Money = 1;
private void Start() {
Money = PlayerPrefs.GetInt("money", 1);
}
public void SetMoney(int money) {
Money = money;
PlayerPrefs.SetInt("money", Money);
}
public int GetMoney() {
return Money;
}
public void SaveGame() {
PlayerPrefs.Save();
}
}
using UnityEngine;
public class MoneyScriptDemo : MonoBehaviour {
private int Money = 1;
public int money {
get => Money;
set {
Money = value;
PlayerPrefs.SetInt("money", value);
}
}
private void Start() {
Money = PlayerPrefs.GetInt("money", 1);
}
public void SaveGame() {
PlayerPrefs.Save();
}
}
// поле класса
public LayerMask playerLayer;
// метод из примера
RaycastHit2D hitInfo = Physics2D.Raycast(ray2D.origin, ray2D.direction, 10, playerLayer);
using UnityEngine;
using UnityEditor;
public class SnapPrefab : MonoBehaviour {
public float cellSize = 0.5f;
#if UNITY_EDITOR
private void OnValidate() {
Snap();
}
#endif
public void Snap() {
Vector3 position = transform.position;
position.x = Mathf.Round(position.x / cellSize) * cellSize;
position.y = Mathf.Round(position.y / cellSize) * cellSize;
position.z = Mathf.Round(position.z / cellSize) * cellSize;
transform.position = position;
}
}
#if UNITY_EDITOR
[CustomEditor(typeof(SnapPrefab))]
public class SnapPrefabEditor : Editor {
public override void OnInspectorGUI() {
base.OnInspectorGUI();
if (GUILayout.Button("Snap")) {
SnapPrefab script = (SnapPrefab) target;
script.Snap();
}
}
}
#endif
var methods = assembly
.GetTypes()
.SelectMany(t => t.GetMethods())
.Where(m => m.GetCustomAttributes().OfType<UpdateHandleAttribute>()
.Any(v => (v.GetType().GetProperty("Data").GetValue(v).ToString() == data ||
v.GetType().GetProperty("Data").GetValue(v).ToString() == "*")
&& v.GetType().GetProperty("State").GetValue(v).ToString() == state.Id.ToString()))
.Concat(assembly.GetTypes()
.SelectMany(t => t.GetMethods())
.Where(m => m.GetCustomAttributes().OfType<AnotherAttribute>().Any()));
using UnityEngine;
public class TimerInvokeDemo : MonoBehaviour {
private void Start() {
Debug.Log("Заводим будильник...");
Invoke("Example", 5);
}
private void Example() {
Debug.Log("Пора на завод.");
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TimerCoroutineDemo : MonoBehaviour {
private void Start() {
StartCoroutine(Example());
}
private IEnumerator Example() {
Debug.Log("Заводим будильник...");
yield return new WaitForSeconds(5);
Debug.Log("Пора на завод.");
}
}
if (animText[1] == 1)
yield return new WaitForSeconds(нужное_время);
animText = Random.Range (1f,4f);
using UnityEngine;
public class BossAnimator : MonoBehaviour {
// Ссылка на аниматор босса
[SerializeField] Animator anim;
// перечень триггеров анимации
// убедитесь, что там нет null элементов
[SerializeField] string[] triggers;
// Метод, который начнёт весь движ
// Как и где его вызывать - решайте сами по ситуации
public void StartFight() {
OnAnimationEnded();
}
// Данный метод нужно привязать как событие
// к концу каждой анимации
public void OnAnimationEnded() {
// Выбираем случайный номер из списка - наш следующий триггер
int nextTriggerIndex = Random.Range(0, triggers.Length);
// Применяем
anim.SetTrigger(triggers[nextTriggerIndex]);
}
}