使用API接口在Untiy实现硬件的控制

各位Unity开发者,
你是否还停留在使用雷达和Kinect作为互动的传感器方案?
你是否还停留在给客人制作动画视频作为互动效果?
现在不必了,你尽管大胆展开想象!
Smart模块化控制器API For Unity 现已上线,轻松应对沉浸式互动需求!
全面兼容近70款传感器,可采集人的各种动作
轻松控制电机,灯光,喷烟机等设备,给客人更丰富的沉浸式体验!
现面向开发者免费开放,还可接入C#和Java哦!
在这里插入图片描述


Smart模块提供的API(MCtrl)为电脑端控制硬件提供了便利的接口,
1.API 的基本使用方法可参加帖子Smart模块开放平台(API接口),或者api.yxyc.top
2.本帖子指导大家解决API接口在U3D中无法使用的问题。

1.将附件中的SmartCtrl 【留言邮箱获取】解压后整个拖入Assets文件夹(拖入即自动拷贝,你也可以手动拷贝到此目录)
在这里插入图片描述
2.代码中传入端口号,由于平台特性,原有自动查找功能失效,需要在代码中传入。
即 RSBusCtrl RSBusCtrl = new RSBusCtrl(“COM9”);
这里的COM口,可以在设备管理中查看,当然前提是你的“总线转换器”已经插入才能找到。
在这里插入图片描述
(友情提示)为了项目的部署方便,你应该使用一个配置文件或者自动程序来查找这个串口号。

解决了上述两个问题,即可正常使用了。
下面贴出一个简单的示例脚本,已经经过测试:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
using MCtrl;


public class NewBehaviourScript : MonoBehaviour
{

    RSBusCtrl RSBusCtrl = new RSBusCtrl("COM9"); //重点,这里要传入参数。
    // Start is called before the first frame update
    void Start()
    {

        bool rs= RSBusCtrl.Start(1);
        UnityEngine.Debug.Log("start:"+ rs.ToString());
        RSBusCtrl.EventInput += RSBusCtrl_EventInput;
    }

    private void RSBusCtrl_EventInput(int id, int portNo, bool state)
    {
        UnityEngine.Debug.Log(string.Format("id:{0}portNo:{1},state:{2}",id,portNo,state));  
      
    }

    public void TestClick() //测试按键,点击一次实现输出口翻转的效果。
    {
        RSBusCtrl.OutSet(1, 1, !RSBusCtrl.GetOutputState(1, 1));
    }

    // Update is called once per frame
    void Update()
    {


        
    }
}

原贴:https://bbs.yxyc.top/thread-217-1-1.html

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Unity实现面向接口编程,需要以下步骤: 1. 定义接口:定义一个接口,包含需要实现的方法及属性。 2. 实现接口:在需要实现接口的类中实现接口中定义的方法和属性。 3. 使用接口:在其他类中使用实现接口的类,而不是直接使用类本身。 4. 依赖注入:将实现接口的类作为参数传入其他类的构造函数中,实现依赖注入。 以下是一个简单的示例代码: ``` public interface IWeapon { void Attack(); } public class Sword : IWeapon { public void Attack() { Debug.Log("Sword Attack"); } } public class Gun : IWeapon { public void Attack() { Debug.Log("Gun Attack"); } } public class Player { private IWeapon weapon; public Player(IWeapon weapon) { this.weapon = weapon; } public void Attack() { weapon.Attack(); } } public class GameManager : MonoBehaviour { void Start() { IWeapon weapon = new Sword(); Player player = new Player(weapon); player.Attack(); } } ``` 在上述代码中,我们定义了一个IWeapon接口,并在Sword和Gun类中实现了该接口。然后我们定义了一个Player类,该类的构造函数需要传入一个实现了IWeapon接口的类。最后,在GameManager中创建了一个Sword实例,并将其传入Player类的构造函数中,最终调用了Player的Attack方法。 这样实现面向接口编程的好处是,我们可以轻松地切换不同的武器,只需要将不同的实现了IWeapon接口的类传入Player类的构造函数中即可。这样可以大大提高代码的可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值