Пример программы на unity

Пример кода на Unity

#

Код — это класс основного бота из мульти-аккаунтного Steam-бота. Здесь используется многопоточность которая позволяет распараллелить несколько задач.

using System; using System.Threading; using SteamApi; namespace TestBot < /// /// Handler сообщений /// /// Уровень логгирования /// Тело сообщения с Markdown разметкой public delegate void TelegramMessageHandler(Telegram.TelegramLog log, string message); /// /// Основной Steam бот /// public class MainBot : SteamBot < private bool working = true; private Thread confirmationThread; /// /// Handler сообщений /// public TelegramMessageHandler MessageHandler; /// /// Инициализирует новый экземпляр класса MainBot /// /// Файл с данными о боте /// Имя бота /// Уровень логгирования public MainBot(string dataFile, string name, LogOptions logging) : base(dataFile, name, logging) < confirmationThread = new Thread(confirmationThreadVoid); >/// /// Запускает поток подтверждений /// public void StartConfirm() < SteamApi.DoLog(«Confirming through proxy»); confirmationThread.Start(); >private void confirmationThreadVoid() < try < while (working) < SteamApi.DoDebug(«Fetching confirmations»); var mainConf = SteamConfirm.GetConfirmations(); foreach (var c in mainConf) < SteamConfirm.AcceptConfirmation(c); >SteamApi.DoDebug(«Confirmation have fetched»); Thread.Sleep(10000); > > catch (Exception e) < SteamApi.DoLog(«EXCEPTION: » + e.Message); SteamApi.DoLog(«EXCEPTION STACK TRACE: » + e.StackTrace); MessageHandler(Telegram.TelegramLog.Errors, string.Format(«Ошибка:n«`n«`», e)); Thread.Sleep(10000); Environment.Exit(-1); > > protected override void mainThreadVoid() < try < while (working) < var incoming = SteamTrade.GetIncomingTradeoffers(); foreach (var offer in incoming) < if (offer.ItemsTo.Count == 0 offer.ItemsFrom.Count >0) < SteamApi.DoDebug(«Got new items from main bot. Accepting. «); SteamTrade.AcceptIncomingTrade(offer.ID.ToString()); SteamApi.DoDebug(«Updating bot inventory»); >else < SteamApi.DoDebug(string.Format(«Strange tradeto satelite from: . Declining. «, offer.From)); SteamTrade.DeclineIncomingTrade(offer.ID.ToString()); > Thread.Sleep(10000); > > > catch (Exception e) < SteamApi.DoLog(«EXCEPTION: » + e.Message); SteamApi.DoLog(«EXCEPTION STACK TRACE: » + e.StackTrace); MessageHandler(Telegram.TelegramLog.Errors, string.Format(«Ошибка:n«`n«`», e)); Thread.Sleep(10000); Environment.Exit(-1); > > /// /// Остановка всех потоков бота (без ожидания завершения) /// public void Stop() < working = false; >> >

Пример 2

MyEvent и EventManager эти скрипты работают в паре друг с другом. Это собственная реализация ивентов. PanelActivityController — демонстрирует работу MyEvent и EventManager. Скрипт принимает конкретный ивент и выполняет указанный набор действий.

Читайте также:
Ноутбук asus установка программ

Вот как Создать Простую Игру за 10 минуток на Unity / Unity 2d / C# / Как создать игру

Учим Unity за 1 час! #От Профессионала

А конкретно включение отключение панелей.

using UnityEngine; using System.Collections.Generic; using System.Runtime.InteropServices; public class EventManager < //UI public static string SHOW_ERROR_TEXT = «SHOW_ERROR_TEXT»; public static string SET_ACTIVE_PANEL = «SET_ACTIVE_PANEL»; public static string UPDATE_SELECTED_OBJECT_STATS = «UPDATE_SELECTED_OBJECT_STATS»; // GAME public static string SHOW_UNPARRENT_WALL = «SHOW_UNPARRENT_WALL»; public static string CHECK_PARENT_TO_CALC = «CHECK_PARENT_TO_CALC»; public static string UPDATE_MAP_LINE = «UPDATE_MAP_LINE»; public static string DELETE_MENU_OBJ = «DELETE_MENU_OBJ»; public static string CLEAR_ALL_STAFF = «CLEAR_ALL_STAFF»; public static string DELETE_OBJ = «DELETE_OBJ»; public static string SAVE_OBJ = «SAVE_OBJ»; public static string SAVE_OBJ_LOCAL = «SAVE_OBJ_LOCAL»; public static string PARAM_SOURCE = «PARAM_SOURCE»; public static string PARAM_VALUE = «PARAM_VALUE»; public static string PARAM_ACTION = «PARAM_ACTION»; public class EventWrapper < public EventWrapper (OnEvent onEvent) < this.onEvent = onEvent; >public OnEvent onEvent; public delegate void OnEvent (MyEvent myEvent); > public static EventManager instance = new EventManager (); public Dictionary> listeners = new Dictionary> (); void Dispatch (MyEvent customEvent) < ListtempList = new List (); tempList.AddRange (listeners [customEvent.type]); foreach (EventWrapper listener in tempList) < listener.onEvent (customEvent); >> void AddListener (string type, EventWrapper listener) < if (!listeners.ContainsKey (type)) < listeners.Add (type, new List()); > listeners [type].Add (listener); > public void DestroyAllListeners (string type) < if (listeners.ContainsKey (type)) < listeners [type].Clear (); >> void RemoveListener (string type, EventWrapper wrapper) < if (listeners.ContainsKey (type)) < listeners [type].Remove (wrapper); >> public void FireEvent (string type, object parameter) < if (listeners.ContainsKey (type)) < MyEvent event1 = new MyEvent (type, parameter); Dispatch (event1); >> public void FireEvent (string type) < FireEvent (type, null); >public void Listen (string type, EventWrapper handler) < AddListener (type, handler); >public void DestroyListener (string type, EventManager.EventWrapper wrapper) < if (wrapper != null) < RemoveListener (type, wrapper); >else < Debug.Log ( «Null listener for destroy type «); >> >
using UnityEngine; using System.Collections; public class MyEvent < public string type; public object parameter; public MyEvent (string type, object parameter) < this.type = type; this.parameter = parameter; >public MyEvent (string type) < this.type = type; >>
using UnityEngine; using System.Collections; [SerializeField] public enum MenuState < Logo = 0, Enter = 1, Work = 2, Order = 3, Export = 4 >public class PanelActivityController : MonoBehaviour < public MenuState panel; protected GameObject content; EventManager.EventWrapper setPanelActivity; bool isActive = false; void OnEnable() < setPanelActivity = new EventManager.EventWrapper(delegate (MyEvent myEvent) < MenuState sentPanel = (MenuState)myEvent.parameter; UpdatePanelActivity(sentPanel); >); EventManager.instance.Listen(EventManager.SET_ACTIVE_PANEL, setPanelActivity); > void OnDisable() < EventManager.instance.DestroyListener(EventManager.SET_ACTIVE_PANEL, setPanelActivity); >void Start() < content = transform.GetChild(0).gameObject; if (panel == MenuState.Logo) < content.SetActive(true); >else < content.SetActive(false); >> void UpdatePanelActivity(MenuState sentPanel) < if (isActive == false) < if (sentPanel == panel) < content.SetActive(true); isActive = true; >else < content.SetActive(false); isActive = false; >> else < content.SetActive(false); isActive = false; >> >

Читайте также:
Эти вирусы являются программами на макроязыках встроенных в некоторые системы обработки данных

Источник: appfox.ru

Демонстрационные проекты

airship demo

Learn more about building ambitious multiplayer games using ECS for Unity and Unity Gaming Services (UGS) with a third-person multiplayer action sample that supports 64+ players.

Enemies, новая демонстрация от команды Unity Demo

Enemies

В этом кинематографическом тизере значительно улучшена фотореалистичность глаз, волос, кожи и многого другого — все они прорисовываются в реальном времени и работают в разрешении 4K.

TIMI branded vehicle

Skid Loader GX7 Configurator

This fully customizable configurator of a GX7 Skid Loader showcases the possibilities of interactive 3D marketing powered by real-time 3D.

Демонстрация Gigaya

Gigaya

Gigaya — это пример игры, созданный командой Unity на базе технологий Unity.

photon-fusion-sample

Large scale battle royale with Photon Fusion

This battle royale sample shows how to create and implement the latest features of fast paced multiplayer games.

Промоарт Enter Boss Room

Boss Room

Создайте небольшую кооперативную игру на основе нашего проекта Boss Room, демонстрирующего возможности сетевой системы.

WiNDUP

Режиссер Ибин Цзян (Yibing Jiang) наполняет жизнью отношения между отцом и его больной дочерью, чтобы подчеркнуть хрупкую природу жизни и любви и целительную силу музыки.

The Heretic

The Heretic — это демофильм с рендерингом в реальном времени, в котором используется множество графических решений Unity, включая все возможные аспекты High Definition Render Pipeline (HDRP).

Megacity

Футуристический живой город с летающими автомобилями, сотнями тысяч высокодетализированных игровых объектов и уникальных источников звука, демонстрирующий достижения DOTS в Unity 2019.1.

Пример шутера от первого лица FPS

Проект многопользовательского шутера от первого лица с полным доступом к исходному коду для изучения или создания собственных игр на его основе.

Книга мертвых

Book of the Dead — это интерактивный фильм от первого лица с рендерингом в реальном времени, созданный демокомандой Unity. Он демонстрирует разработчикам игр возможности Unity 2018 по созданию высококачественной графики.

Читайте также:
Программа которая удаляет временные файлы

Neon

В окружении используются модели, загруженные исключительно из Asset Store. Создано с помощью Unity 2017.1, первой версии стека постобработки и пакета объемного освещения.

Adam

Adam — это короткометражка от разработчиков демонстраций Unity с рендерингом в реальном времени. Она была создана для демонстрации и тестирования возможностей графики Unity еще в 2016 году!

The Blacksmith

Blacksmith — короткометражка с рендерингом в реальном времени на основе скандинавских мифов.

Courtyard

Отличный пример возможностей глобального освещения в реальном времени от Unity, доступный для изучения в AssetStore.

Bedroom

Пример архитектурной визуализации, проект для исследования глобального освещения и первый взгляд на технологию отражений в экранном пространстве с трассировкой лучей в Unity.

Viking Village

Готовое для использования в играх окружение, созданное на основе физических шейдеров Unity и библиотеки сканированных текстур Megascans от Quixel. Это окружение также использовалось для тестирования процессов разработки освещения в Unity 5. Проект доступен в AssetStore.

Источник: unity.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru