Physics.Raycast 버그 잡음

This commit is contained in:
logonkhi
2025-06-24 14:38:58 +09:00
parent fa773ad3a3
commit 3acff06eca
4458 changed files with 3510 additions and 576 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 81c8337419acf7843889f90145c1f014
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,231 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Best.HTTP.Shared.PlatformSupport.Memory;
using Best.MQTT;
using Best.MQTT.Examples;
using Best.MQTT.Examples.Helpers;
using Best.MQTT.Packets;
using Best.MQTT.Packets.Builders;
using UnityEngine;
namespace Best.MQTT.Examples
{
public partial class GenericClient
{
private MQTTClient client;
// UI instances of SubscriptionListItem
private List<SubscriptionListItem> subscriptionListItems = new List<SubscriptionListItem>();
public void OnConnectButton()
{
#if UNITY_WEBGL && !UNITY_EDITOR
if (this.transportDropdown.value == 0)
{
AddText("<color=red>TCP transport isn't available under WebGL!</color>");
return;
}
#endif
SetConnectingUI();
var host = this.hostInput.GetValue("broker.mqttdashboard.com");
AddText($"[{host}] Connecting with client id: <color=green>{SessionHelper.Get(host).ClientId}</color>");
var options = new ConnectionOptions();
options.Host = host;
options.Port = this.portInput.GetIntValue(1883);
options.Transport = (SupportedTransports)this.transportDropdown.value;
options.UseTLS = this.isSecureToggle.GetBoolValue();
options.Path = this.pathInput.GetValue("/mqtt");
options.ProtocolVersion = (SupportedProtocolVersions)this.protocolVersionDropdown.value;
this.client = new MQTTClient(options);
this.client.OnConnected += OnConnected;
this.client.OnError += OnError;
this.client.OnDisconnect += OnDisconnected;
this.client.OnStateChanged += OnStateChanged;
this.client.BeginConnect(ConnectPacketBuilderCallback);
}
private void OnConnected(MQTTClient client)
{
SetConnectedUI();
}
private void OnDisconnected(MQTTClient client, DisconnectReasonCodes code, string reason)
{
SetDisconnectedUI();
AddText($"[{client.Options.Host}] OnDisconnected - code: <color=blue>{code}</color>, reason: <color=red>{reason}</color>");
}
private void OnError(MQTTClient client, string reason)
{
AddText($"[{client.Options.Host}] OnError reason: <color=red>{reason}</color>");
}
public void OnDisconnectButton()
{
this.connectButton.interactable = false;
this.client?.CreateDisconnectPacketBuilder().BeginDisconnect();
}
private void OnStateChanged(MQTTClient client, ClientStates oldState, ClientStates newState)
{
AddText($"[{client.Options.Host}] <color=yellow>{oldState}</color> => <color=green>{newState}</color>");
}
private ConnectPacketBuilder ConnectPacketBuilderCallback(MQTTClient client, ConnectPacketBuilder builder)
{
AddText($"[{client.Options.Host}] Creating connect packet.");
var userName = this.userNameInput.GetValue(null);
var password = this.passwordInput.GetValue(null);
var session = SessionHelper.HasAny(client.Options.Host) ? SessionHelper.Get(client.Options.Host) : SessionHelper.CreateNullSession(client.Options.Host);
builder.WithSession(session);
if (!string.IsNullOrEmpty(userName))
builder.WithUserName(userName);
if (!string.IsNullOrEmpty(password))
builder.WithPassword(password);
builder.WithKeepAlive((ushort)this.keepAliveInput.GetIntValue(60));
// setup last-will
var lastWillTopic = this.lastWill_TopicInput.GetValue(null);
var lastWillMessage = this.lastWill_MessageInput.GetValue(null);
var retain = this.lastWill_RetainToggle.GetBoolValue();
if (!string.IsNullOrEmpty(lastWillTopic) && !string.IsNullOrEmpty(lastWillMessage))
builder.WithLastWill(new LastWillBuilder()
.WithTopic(lastWillTopic)
.WithContentType("text/utf-8")
.WithPayload(Encoding.UTF8.GetBytes(lastWillMessage))
.WithQoS(this.lastWill_QoSDropdown.GetQoS())
.WithRetain(retain));
return builder;
}
public void OnPublishButtonClicked()
{
string topic = this.publish_TopicInput.GetValue("best_mqtt/test");
QoSLevels qos = this.publish_QoSDropdown.GetQoS();
bool retain = this.publish_RetainToggle.GetBoolValue();
string message = this.publish_MessageInput.GetValue("Hello MQTT World...");
this.client.CreateApplicationMessageBuilder(topic)
.WithQoS(qos)
.WithRetain(retain)
.WithPayload(message)
.BeginPublish();
}
public void OnSubscribeButtonClicked()
{
var colorValue = this.subscribe_ColorInput.GetValue("000000");
if (!ColorUtility.TryParseHtmlString("#" + colorValue, out var color))
{
AddText($"[{client.Options.Host}] <color=red>Couldn't parse '#{colorValue}'</color>");
return;
}
var qos = this.subscribe_QoSDropdown.GetQoS();
var topic = this.subscribe_TopicInput.GetValue("best_mqtt/#");
this.client?.CreateBulkSubscriptionBuilder()
.WithTopic(new SubscribeTopicBuilder(topic)
.WithMaximumQoS(qos)
.WithAcknowledgementCallback(OnSubscriptionAcknowledgement)
.WithMessageCallback(OnApplicationMessage))
.BeginSubscribe();
AddText($"[{client.Options.Host}] Subscribe request for topic <color=#{colorValue}>{topic}</color> sent...");
AddSubscriptionUI(topic, colorValue);
}
private void OnSubscriptionAcknowledgement(MQTTClient client, SubscriptionTopic topic, SubscribeAckReasonCodes reasonCode)
{
var subscription = FindSubscriptionItem(topic.Filter.OriginalFilter);
string reasonColor = reasonCode <= SubscribeAckReasonCodes.GrantedQoS2 ? "green" : "red";
AddText($"[{client.Options.Host}] Subscription request to topic <color=#{subscription.Color}>{topic.Filter.OriginalFilter}</color> returned with reason code: <color={reasonColor}>{reasonCode}</color>");
}
private void AddSubscriptionUI(string topic, string color)
{
var item = Instantiate<SubscriptionListItem>(this.subscription_ListItem, this.subscribe_ListItemRoot);
item.Set(this, topic, color);
this.subscriptionListItems.Add(item);
}
public void Unsubscribe(string topic)
{
this.client.CreateUnsubscribePacketBuilder(topic)
.WithAcknowledgementCallback(OnUnsubscribed)
.BeginUnsubscribe();
var subscription = FindSubscriptionItem(topic);
AddText($"[{client.Options.Host}] Unsubscribe request for topic <color=#{subscription.Color}>{topic}</color> sent...");
}
private void OnUnsubscribed(MQTTClient client, string topic, Best.MQTT.Packets.UnsubscribeAckReasonCodes reason)
{
var instance = this.subscriptionListItems.FirstOrDefault(s => s.Topic.OriginalFilter == topic);
this.subscriptionListItems.Remove(instance);
Destroy(instance.gameObject);
string reasonColor = reason == UnsubscribeAckReasonCodes.Success ? "green" : "red";
AddText($"[{client.Options.Host}] Unsubscription request to topic <color=#{instance.Color}>{topic}</color> returned with reason code: <color={reasonColor}>{reason}</color>");
}
private void OnApplicationMessage(MQTTClient client, SubscriptionTopic topic, string topicName, ApplicationMessage applicationMessage)
{
// find matching subscription for its color
var subscription = FindSubscriptionItem(topicName);
string payload = string.Empty;
// Here we going to try to convert the payload as an UTF-8 string. Note that it's not guaranteed that the payload is a string!
// While MQTT supports an additional Content-Type field in this demo we can't rely on its presense.
if (applicationMessage.Payload != BufferSegment.Empty)
{
payload = Encoding.UTF8.GetString(applicationMessage.Payload.Data, applicationMessage.Payload.Offset, applicationMessage.Payload.Count);
const int MaxPayloadLength = 512;
if (payload.Length > MaxPayloadLength)
payload = payload?.Remove(MaxPayloadLength);
}
// Display the Content-Type if present
string contentType = string.Empty;
if (applicationMessage.ContentType != null)
contentType = $" ({applicationMessage.ContentType}) ";
// Add the final text to the demo's log view.
AddText($"[{client.Options.Host}] <color=#{subscription.Color}>[{topicName}] {contentType}{payload}</color>");
}
private SubscriptionListItem FindSubscriptionItem(string topicName) => this.subscriptionListItems.FirstOrDefault(s => s.Topic.IsMatching(topicName));
private void OnDestroy()
{
this.client?.CreateDisconnectPacketBuilder().BeginDisconnect();
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 80cb39f4371a29e4d8da5a85303b5ee9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/GenericClient.Logic.cs
uploadId: 737289

View File

@@ -0,0 +1,302 @@
using System.Collections.Generic;
using Best.HTTP.Shared;
using Best.MQTT;
using Best.MQTT.Examples;
using Best.MQTT.Examples.Helpers;
using UnityEngine;
using UnityEngine.UI;
namespace Best.MQTT.Examples
{
public partial class GenericClient : MonoBehaviour
{
#pragma warning disable 0649
[Header("Connect")]
[SerializeField]
private Dropdown templatesDropdown;
[SerializeField]
private InputField hostInput;
[SerializeField]
private InputField portInput;
[SerializeField]
private Dropdown transportDropdown;
[SerializeField]
private InputField pathInput;
[SerializeField]
private Toggle isSecureToggle;
[SerializeField]
private InputField userNameInput;
[SerializeField]
private InputField passwordInput;
[SerializeField]
private InputField keepAliveInput;
[SerializeField]
private Dropdown protocolVersionDropdown;
[SerializeField]
private Button connectButton;
[Header("Connect Last-Will")]
[SerializeField]
private InputField lastWill_TopicInput;
[SerializeField]
private Dropdown lastWill_QoSDropdown;
[SerializeField]
private Toggle lastWill_RetainToggle;
[SerializeField]
private InputField lastWill_MessageInput;
[Header("Publish")]
[SerializeField]
private InputField publish_TopicInput;
[SerializeField]
private Dropdown publish_QoSDropdown;
[SerializeField]
private Toggle publish_RetainToggle;
[SerializeField]
private InputField publish_MessageInput;
[Header("Subscribe")]
[SerializeField]
private InputField subscribe_ColorInput;
[SerializeField]
private Dropdown subscribe_QoSDropdown;
[SerializeField]
private InputField subscribe_TopicInput;
[SerializeField]
private Transform subscribe_ListItemRoot;
[SerializeField]
private SubscriptionListItem subscription_ListItem;
[SerializeField]
private Transform publishSubscribePanel;
[Header("Logs")]
[SerializeField]
private InputField logs_MaxEntriesInput;
[SerializeField]
private Toggle logs_AutoScroll;
[SerializeField]
private TextListItem textListItem;
[SerializeField]
private ScrollRect log_view;
[SerializeField]
private Transform logRoot;
#pragma warning restore
private void Awake()
{
InitUI();
PopulateTemplates();
}
private void AddText(string text)
{
int maxEntries = this.logs_MaxEntriesInput.GetIntValue(100);
if (this.logRoot.childCount >= maxEntries)
{
TrimLogEntries(maxEntries);
var child = this.logRoot.GetChild(0);
child.GetComponent<TextListItem>().SetText(text);
child.SetAsLastSibling();
}
else
{
var item = Instantiate<TextListItem>(this.textListItem, this.logRoot);
item.SetText(text);
}
bool autoScroll = this.logs_AutoScroll.GetBoolValue();
if (autoScroll)
{
this.log_view.normalizedPosition = new Vector2(0, 0);
}
}
private void TrimLogEntries(int maxEntries)
{
while (this.logRoot.childCount > maxEntries)
{
var child = this.logRoot.GetChild(0);
child.transform.SetParent(this.transform);
Destroy(child.gameObject);
}
}
private void InitUI()
{
this.connectButton.GetComponentInChildren<Text>().text = "Connect";
this.connectButton.interactable = true;
this.connectButton.onClick.RemoveAllListeners();
this.connectButton.onClick.AddListener(OnConnectButton);
foreach (var button in this.publishSubscribePanel.GetComponentsInChildren<Button>())
button.interactable = false;
}
class Template
{
public string name;
public string host;
public int port;
public SupportedTransports transport;
public string path = "/mqtt";
public bool isSecure;
public string username = string.Empty;
public string password = string.Empty;
public int keepAliveSeconds = 60;
public SupportedProtocolVersions protocolVersion;
public Template()
{
this.protocolVersion = SupportedProtocolVersions.MQTT_5_0;
}
}
private Template[] templates = new Template[]
{
// broker.mqttdashboard.com
#if !UNITY_WEBGL || UNITY_EDITOR
new Template { name = "HiveMQ - TCP - Unsecure - Unauthenticated", host = "broker.hivemq.com", port = 1883, transport = SupportedTransports.TCP, isSecure = false },
new Template { name = "HiveMQ - WebSocket - Unauthenticated", host = "broker.hivemq.com", port = 8000, transport = SupportedTransports.WebSocket, isSecure = false },
#endif
// broker.emqx.io
#if !UNITY_WEBGL || UNITY_EDITOR
new Template { name = "emqx.com - TCP - Unsecure - Unauthenticated", host = "broker.emqx.io", port = 1883, transport = SupportedTransports.TCP, isSecure = false },
new Template { name = "emqx.com - TCP - Secure - Unauthenticated", host = "broker.emqx.io", port = 8883, transport = SupportedTransports.TCP, isSecure = true },
new Template { name = "emqx.com - WebSocket - Unsecure - Unauthenticated", host = "broker.emqx.io", port = 8083, transport = SupportedTransports.WebSocket, isSecure = false },
#endif
new Template { name = "emqx.com - WebSocket - Secure - Unauthenticated", host = "broker.emqx.io", port = 8084, transport = SupportedTransports.WebSocket, isSecure = true },
// test.mosquitto.org
#if !UNITY_WEBGL || UNITY_EDITOR
new Template{ name ="test.mosquitto.org - TCP - Unsecure - Unauthenticated", host = "test.mosquitto.org", port = 1883, transport = SupportedTransports.TCP, isSecure = false },
new Template{ name ="test.mosquitto.org - TCP - Unsecure - Authenticated (Read/Write)", host = "test.mosquitto.org", port = 1884, transport = SupportedTransports.TCP, isSecure = false, username = "rw", password = "readwrite" },
new Template{ name ="test.mosquitto.org - TCP - Unsecure - Authenticated (Read only)", host = "test.mosquitto.org", port = 1884, transport = SupportedTransports.TCP, isSecure = false, username = "ro", password = "readonly" },
new Template{ name ="test.mosquitto.org - TCP - Unsecure - Authenticated (Write only)", host = "test.mosquitto.org", port = 1884, transport = SupportedTransports.TCP, isSecure = false, username = "wo", password = "writeonly" },
new Template{ name ="test.mosquitto.org - TCP - Secure (Self signed cert) - Unauthenticated", host = "test.mosquitto.org", port = 8883, transport = SupportedTransports.TCP, isSecure = true },
new Template{ name ="test.mosquitto.org - TCP - Secure (Self signed cert) - Client Certificate Required (see docs)", host = "test.mosquitto.org", port = 8884, transport = SupportedTransports.TCP, isSecure = true },
new Template{ name ="test.mosquitto.org - TCP - Secure - Authenticated (Read/Write)", host = "test.mosquitto.org", port = 8885, transport = SupportedTransports.TCP, isSecure = true, username = "rw", password = "readwrite" },
new Template{ name ="test.mosquitto.org - TCP - Secure - Authenticated (Read only)", host = "test.mosquitto.org", port = 8885, transport = SupportedTransports.TCP, isSecure = true, username = "ro", password = "readonly" },
new Template{ name ="test.mosquitto.org - TCP - Secure - Authenticated (Write only)", host = "test.mosquitto.org", port = 8885, transport = SupportedTransports.TCP, isSecure = true, username = "wo", password = "writeonly" },
new Template{ name ="test.mosquitto.org - TCP - Secure (Lets Encrypt cert) - Unauthenticated", host = "test.mosquitto.org", port = 8886, transport = SupportedTransports.TCP, isSecure = true },
new Template{ name ="test.mosquitto.org - TCP - Secure (server certificate deliberately expired) - Unauthenticated", host = "test.mosquitto.org", port = 8887, transport = SupportedTransports.TCP, isSecure = true },
new Template{ name ="test.mosquitto.org - WebSocket - Unsecure - Unauthenticated", host = "test.mosquitto.org", port = 8080, transport = SupportedTransports.WebSocket, isSecure = false },
new Template{ name ="test.mosquitto.org - WebSocket - Unsecure - Authenticated (Read/Write)", host = "test.mosquitto.org", port = 8090, transport = SupportedTransports.WebSocket, isSecure = false, username = "rw", password = "readwrite" },
new Template{ name ="test.mosquitto.org - WebSocket - Unsecure - Authenticated (Read only)", host = "test.mosquitto.org", port = 8090, transport = SupportedTransports.WebSocket, isSecure = false, username = "ro", password = "readonly" },
new Template{ name ="test.mosquitto.org - WebSocket - Unsecure - Authenticated (Write only)", host = "test.mosquitto.org", port = 8090, transport = SupportedTransports.WebSocket, isSecure = false, username = "wo", password = "writeonly" },
#endif
new Template{ name ="test.mosquitto.org - WebSocket - Secure - Unauthenticated", host = "test.mosquitto.org", port = 8081, transport = SupportedTransports.WebSocket, isSecure = true },
new Template{ name ="test.mosquitto.org - WebSocket - Secure - Authenticated (Read/Write)", host = "test.mosquitto.org", port = 8091, transport = SupportedTransports.WebSocket, isSecure = true, username = "rw", password = "readwrite" },
new Template{ name ="test.mosquitto.org - WebSocket - Secure - Authenticated (Read only)", host = "test.mosquitto.org", port = 8091, transport = SupportedTransports.WebSocket, isSecure = true, username = "ro", password = "readonly" },
new Template{ name ="test.mosquitto.org - WebSocket - Secure - Authenticated (Write only)", host = "test.mosquitto.org", port = 8091, transport = SupportedTransports.WebSocket, isSecure = true, username = "wo", password = "writeonly" },
};
private void PopulateTemplates()
{
List<Dropdown.OptionData> options = new List<Dropdown.OptionData>(templates.Length);
for (int i = 0; i < templates.Length; i++)
{
var template = templates[i];
options.Add(new Dropdown.OptionData(template.name));
}
this.templatesDropdown.AddOptions(options);
this.templatesDropdown.onValueChanged.AddListener(OnTemplateSelected);
OnTemplateSelected(0);
}
private void OnTemplateSelected(int idx)
{
var template = this.templates[idx];
this.hostInput.text = template.host;
this.portInput.text = template.port.ToString();
this.transportDropdown.value = (int)template.transport;
this.pathInput.text = template.path;
this.isSecureToggle.isOn = template.isSecure;
this.userNameInput.text = template.username;
this.passwordInput.text = template.password;
this.keepAliveInput.text = template.keepAliveSeconds.ToString();
}
private void SetConnectingUI()
{
this.connectButton.interactable = false;
foreach (var button in this.publishSubscribePanel.GetComponentsInChildren<Button>())
button.interactable = false;
}
private void SetDisconnectedUI()
{
InitUI();
for (int i = 0; i < this.subscriptionListItems.Count; ++i)
Destroy(this.subscriptionListItems[i].gameObject);
this.subscriptionListItems.Clear();
}
private void SetConnectedUI()
{
this.connectButton.GetComponentInChildren<Text>().text = "Disconnect";
this.connectButton.interactable = true;
this.connectButton.onClick.RemoveAllListeners();
this.connectButton.onClick.AddListener(OnDisconnectButton);
foreach (var button in this.publishSubscribePanel.GetComponentsInChildren<Button>())
button.interactable = true;
}
public void ClearLogEntries()
{
TrimLogEntries(0);
}
public void OnLogLevelChanged(int idx)
{
switch (idx)
{
case 0: HTTPManager.Logger.Level = Best.HTTP.Shared.Logger.Loglevels.All; break;
case 1: HTTPManager.Logger.Level = Best.HTTP.Shared.Logger.Loglevels.Warning; break;
case 2: HTTPManager.Logger.Level = Best.HTTP.Shared.Logger.Loglevels.None; break;
}
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 9938b568415c6564cb9f4be9f7f5a537
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/GenericClient.cs
uploadId: 737289

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: fb515955b8e045948a0b8f83df56989f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/MQTT Generic
Client.unity
uploadId: 737289

View File

@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Best.MQTT.Examples.Helpers
{
public class SubscriptionListItem : MonoBehaviour
{
#pragma warning disable 0649
[SerializeField]
private Text _text;
#pragma warning restore
public GenericClient Parent { get; private set; }
public TopicFilter Topic { get; private set; }
public string Color { get; private set; }
public void Set(GenericClient parent, string topic, string color)
{
this.Parent = parent;
this.Topic = new TopicFilter(topic);
this.Color = color;
this._text.text = $"<color=#{color}>{topic}</color>";
}
public void AddLeftPadding(int padding)
{
this.GetComponent<LayoutGroup>().padding.left += padding;
}
public void OnUnsubscribeButton()
{
this.Parent.Unsubscribe(this.Topic.OriginalFilter);
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 4bcdb5688a6256b40b11d60a9a067c56
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/SubscriptionListItem.cs
uploadId: 737289

View File

@@ -0,0 +1,505 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1503879635514882
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 224106021874867618}
- component: {fileID: 222738347872656220}
- component: {fileID: 114900463745114476}
- component: {fileID: 1051233840454038680}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &224106021874867618
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1503879635514882}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224916463173798366}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222738347872656220
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1503879635514882}
m_CullTransparentMesh: 1
--- !u!114 &114900463745114476
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1503879635514882}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 10
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_Alignment: 3
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: New Text
--- !u!114 &1051233840454038680
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1503879635514882}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: -1
m_FlexibleWidth: 1000
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &1727935926237334
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 224916463173798366}
- component: {fileID: 222969618919079142}
- component: {fileID: 114878452276715702}
- component: {fileID: 3108536496360353843}
- component: {fileID: 114599056085522236}
- component: {fileID: -5100988258321374606}
m_Layer: 5
m_Name: SubscriptionListItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &224916463173798366
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224106021874867618}
- {fileID: 765797949909065420}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 400, y: 0}
m_SizeDelta: {x: 800, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222969618919079142
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_CullTransparentMesh: 1
--- !u!114 &114878452276715702
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.39215687}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &3108536496360353843
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 4
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 2
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1
m_ChildControlHeight: 1
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &114599056085522236
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!114 &-5100988258321374606
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4bcdb5688a6256b40b11d60a9a067c56, type: 3}
m_Name:
m_EditorClassIdentifier:
_text: {fileID: 114900463745114476}
--- !u!1 &5954671850174814176
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3966937138859088225}
- component: {fileID: 3106221332611440204}
- component: {fileID: 7563984271549099249}
- component: {fileID: 3575071619995480036}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3966937138859088225
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5954671850174814176}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 765797949909065420}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 8.5, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3106221332611440204
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5954671850174814176}
m_CullTransparentMesh: 1
--- !u!114 &7563984271549099249
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5954671850174814176}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: X
--- !u!114 &3575071619995480036
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5954671850174814176}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 2
m_VerticalFit: 2
--- !u!1 &6294619207575708782
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 765797949909065420}
- component: {fileID: 1621773801305321924}
- component: {fileID: 842342122110012726}
- component: {fileID: 7798147322332922238}
- component: {fileID: 554121520253107367}
- component: {fileID: 7170877629076184653}
m_Layer: 5
m_Name: Unsubscribe Button
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &765797949909065420
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6294619207575708782}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3966937138859088225}
m_Father: {fileID: 224916463173798366}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 792.13184, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1621773801305321924
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6294619207575708782}
m_CullTransparentMesh: 1
--- !u!114 &842342122110012726
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6294619207575708782}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &7798147322332922238
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6294619207575708782}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 842342122110012726}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: -5100988258321374606}
m_TargetAssemblyTypeName: BestMQTT.Examples.Helpers.SubscriptionListItem,
BestMQTT.Examples
m_MethodName: OnUnsubscribeButton
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &554121520253107367
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6294619207575708782}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 2
m_VerticalFit: 2
--- !u!114 &7170877629076184653
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6294619207575708782}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 4
m_Right: 2
m_Top: 2
m_Bottom: 2
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0

View File

@@ -0,0 +1,17 @@
fileFormatVersion: 2
guid: 211393e24539a09439d6a32d5b50f6c2
timeCreated: 1571213203
licenseType: Store
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/SubscriptionListItem.prefab
uploadId: 737289

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Best.MQTT.Examples.Helpers
{
public class TextListItem : MonoBehaviour
{
#pragma warning disable 0649
[SerializeField]
private Text _text;
#pragma warning restore
public void SetText(string text)
{
this._text.text = text;
}
public void AddLeftPadding(int padding)
{
this.GetComponent<LayoutGroup>().padding.left += padding;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 7e005f371ce6746488c3585f2e334b13
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/TextListItem.cs
uploadId: 737289

View File

@@ -0,0 +1,213 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1503879635514882
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 224106021874867618}
- component: {fileID: 222738347872656220}
- component: {fileID: 114900463745114476}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &224106021874867618
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1503879635514882}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224916463173798366}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222738347872656220
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1503879635514882}
m_CullTransparentMesh: 1
--- !u!114 &114900463745114476
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1503879635514882}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 10
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 1
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: New Text
--- !u!1 &1727935926237334
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 224916463173798366}
- component: {fileID: 222969618919079142}
- component: {fileID: 114878452276715702}
- component: {fileID: 114769119028883068}
- component: {fileID: 114599056085522236}
- component: {fileID: 4980189004733473499}
m_Layer: 5
m_Name: TextListItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &224916463173798366
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224106021874867618}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 400, y: 0}
m_SizeDelta: {x: 800, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &222969618919079142
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_CullTransparentMesh: 1
--- !u!114 &114878452276715702
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.39215687}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &114769119028883068
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 5
m_Right: 2
m_Top: 2
m_Bottom: 2
m_ChildAlignment: 0
m_Spacing: 2
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1
m_ChildControlHeight: 1
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &114599056085522236
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!114 &4980189004733473499
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727935926237334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7e005f371ce6746488c3585f2e334b13, type: 3}
m_Name:
m_EditorClassIdentifier:
_text: {fileID: 114900463745114476}

View File

@@ -0,0 +1,17 @@
fileFormatVersion: 2
guid: bfa1d92416b9c64428b3b69c63ffe72e
timeCreated: 1571213203
licenseType: Store
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/TextListItem.prefab
uploadId: 737289

View File

@@ -0,0 +1,39 @@
using System;
using Best.MQTT.Packets;
using UnityEngine.UI;
namespace Best.MQTT.Examples
{
public static class UIExtensions
{
public static string GetValue(this InputField field)
{
var value = field.text;
return value;
}
public static string GetValue(this InputField field, string defaultValue)
{
var value = field.text;
return string.IsNullOrEmpty(value) ? defaultValue : value;
}
public static int GetIntValue(this InputField field, int defaultValue)
{
return int.TryParse(field.text, out var value) ? value : defaultValue;
}
public static bool GetBoolValue(this Toggle toggle)
{
return toggle.isOn;
}
public static QoSLevels GetQoS(this Dropdown dropdown)
{
return ((QoSLevels[])Enum.GetValues(typeof(QoSLevels)))[dropdown.value];
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 46ef4964971658042a4aaa089ce95f75
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/UIExtensions.cs
uploadId: 737289

View File

@@ -0,0 +1,17 @@
{
"name": "com.Tivadar.Best.MQTT.Examples.GenericClient",
"rootNamespace": "Best.MQTT.Examples",
"references": [
"GUID:9069ac25d95ca17448a247f3bb1c769f",
"GUID:d9c143f5f90809e41835a785e1aafc2e"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 5c288b9c47c5c4343aa6095908cf116e
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/com.Tivadar.Best.MQTT.Examples.GenericClient.asmdef
uploadId: 737289

View File

@@ -0,0 +1,5 @@
#https://forum.unity.com/threads/rsp-file-per-assembly-or-folder.572758/
#https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/errors-warnings
-warnaserror
-nowarn:CS1701,CS0612

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 8466cdfc4cc3dd44ba048d4f37ec4f72
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268762
packageName: Best MQTT
packageVersion: 3.0.4
assetPath: Packages/com.tivadar.best.mqtt/Samples~/Generic Client/csc.rsp
uploadId: 737289