Unity3D
Образование
Unity3D экранная клавиатура под Windows - OSK OnScreenKeyboard Rus/Eng
Автор KuzevichДобрый день, Друзья.
Если Ваше приложение для мобильного устройства, то при переходе в inputbox, автоматически открывается родное приложение клавиатуры.
Но я столкнулся с проблемой при разработке приложения для тач-скрина на платформе windows.
Теоретически, экранная клавиатура в нем есть и я вначале использовал системный вызов, подсмотренный здесь:
public void ShowTouchKeyboard() { ExternalCall("C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\tabtip.exe", null, false); }
или
public void ShowOnScreenKeyboard() { if (_onScreenKeyboardProcess == null || _onScreenKeyboardProcess.HasExited) _onScreenKeyboardProcess = ExternalCall("OSK", null, false); }
Но столкнулся с тем, что она периодически глючила - либо не появлялась, либо залипали кнопки, в связи с этим было решено набросать свой Prefab для Unity, более того, выложил его в assetstore (об этом возможно отдельную статью напишу позже).
Asset бесплатный, скачивайте и пользуйтесь на здоровье:
https://assetstore.unity.com/packages/tools/input-management/osk-onscreenkeyboard-rus-eng-148532
Unity3D C# отправка Email в формате HTML с вложенной картинкой
Автор KuzevichДобрый день.
В продолжение темы об отправке Email из Unity на C#
Универсальное решение для всех почтовых клиентов подсмотрел здесь.
public static void SendMessageWithEmbeddedImages() { string htmlMessage = @"<html> <body> <img src='cid:EmbeddedContent_1' /> </body> </html>"; SmtpClient client = new SmtpClient("mail.server.com"); MailMessage msg = new MailMessage("Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.", "Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript."); // Создаем HTML view AlternateView htmlView = AlternateView.CreateAlternateViewFromString( htmlMessage, Encoding.UTF8, MediaTypeNames.Text.Html); // Создаем текстовую альтернативу для почтовых клиентов, не поддерживающих HTML AlternateView plainView = AlternateView.CreateAlternateViewFromString( Regex.Replace(htmlMessage, "<[^>]+?>", string.Empty), Encoding.UTF8, MediaTypeNames.Text.Plain); string mediaType = MediaTypeNames.Image.Jpeg; LinkedResource img = new LinkedResource(@"C:\Images\MyImage.jpg", mediaType); // Обязательно установите все эти значения!!! img.ContentId = "EmbeddedContent_1"; img.ContentType.MediaType = mediaType; img.TransferEncoding = TransferEncoding.Base64; img.ContentType.Name = img.ContentId; img.ContentLink = new Uri("cid:" + img.ContentId); htmlView.LinkedResources.Add(img); ////////////////////////////////////////////////////////////// msg.AlternateViews.Add(plainView); msg.AlternateViews.Add(htmlView); msg.IsBodyHtml = true; msg.Subject = "Some subject"; client.Send(msg); }
Unity3D Particles Canvas - создание эффектов частиц на пользовательском интерфейсе в Unity
Автор KuzevichСоздавая пользовательский интерфейс, понадобилось добавить эффект салюта.
Создавал его с помощью Particles, но при запуске приложения - частиц не видно.
Выхода два:
1) Скачать asset, упрощающий добавление эффектов в UI отсюда.
Посмотреть как это работает, можно здесь.
2) В свойствах Canvas установить Render Mode: Screen Space - Camera, а в Render Camera выбрать Вашу камеру. Тогда Canvas встроится в отображение камеры и таким образом будет видны эффекты частиц.
Подробнее здесь.
Понадобилась в приложении достаточно сложная анимация с бликом на кнопке, наподобие этого.
Но средствами unity реализовать достаточно тяжело (нужно писать шейдеры)
Решено было сделать это в другой программе, вывести видеофайл и вставить в приложение.
Оказалось тоже не все так просто. Unity3D поддерживает альфа-канал или прозрачность только в Apple ProRes 4444 Codec или Webm with VP8
Подробнее здесь.
Пришлось сконвертировать готовый видеофайл с альфа-каналом с помощью бесплатного конвертера Format Factory в WebM, после чего на свойствах видео появилась возможность поставить галку "Keep Alpha"
Таким образом видео стало с прозрачными областями и его получилось поставить на кнопку.