unity 开发中10个小知识(一)

news/2025/2/15 23:50:30/

现在记忆力越来越差,写过很多遍的内容,都有可能需要慢慢才能想起来,这里就记录下在unity开发过程中一些小的知识点

一、获取unity层级和layerMask

 int ground = LayerMask.NameToLayer("Ground");

 int groundMask = 1<<ground;


二、获取鼠标拾取位置

 

    public static  class ULayerMask
    {
        public static int Ground = LayerMask.NameToLayer("Ground");
        public static int GroundMask = 1<<LayerMask.NameToLayer("Ground");

        public static int Wall = LayerMask.NameToLayer("Wall");

        public static int WallMask = 1 << Wall;

        public static int CollisionMask = 1<< Ground | 1<< Wall;



    }

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            RaycastHit hit;

            if (Physics.Raycast(ray, out hit,1000f,ULayerMask.CollisionMask)) 
            {
                ULog.Error("astar");
                foreach (var actor in charactors.GetActors())
                {
                    actor.Astar?.BeginPath(hit.point);
                }
            }


 

 三、获取触摸输入的位置

for (var i = 0; i < Input.touchCount; ++i)
{if (Input.GetTouch(i).phase == TouchPhase.Began){// Construct a ray from the current touch coordinatesRay ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);// Create a particle if hitif (Physics.Raycast(ray)){//ULog.Info(ray.ToString());}}
} 

四、FariyGui 判断鼠标等输入设备是否在UI之上

 Stage.isTouchOnUI


 

五、fairyGui动态创建UIPanel

GameObject uiObject = new GameObject();
uiObject.layer = ULayerMask.UI;


UIPanel uiPanel = uiObject.AddComponent<UIPanel>();

uiPanel.packageName = package;
uiPanel.componentName = componentName;

uiPanel.CreateUI();

 


 六、fairyGui为控件添加Touch事件

  GObject _touchArea;

_touchArea.onTouchBegin.Add(this.OnTouchBegin);
 _touchArea.onTouchMove.Add(this.OnTouchMove);
_touchArea.onTouchEnd.Add(this.OnTouchEnd);

七 C#中??的使用

a??b;

当a不为空时返回a,否则返回b

八、C#中 ?. 的使用

a?.name

如果a为空返回空,否则返回a.name

string name = a?.name;

九、如何对泛型进行约束

约束为T必须继承BaseComponent,并且带默认构造函数

public void RemoveComponent<T>() where  T : BaseComponent,new()
{
    RemoveComponent(typeof(T));

}


十、绕y轴选旋转一定角度

 

public void RotationY(float angle)
{

    transform.rotation = Quaternion.Euler(Vector3.up * (angle % 360));
}


http://www.ppmy.cn/news/246361.html

相关文章

Qt/GUI/布局/实现窗口折叠效果/且在操作时父窗口尺寸跟随变动

文章目录 概述无法resize到小尺寸可行方案其他方案 概述 本文旨在&#xff0c;实现如下所示的显示或隐藏 ‘附加选项’ 的效果&#xff0c;以折的不常用信息和操作项&#xff0c;减少普通用户负担&#xff0c;提升用户体验。在某些软件中此类窗口折叠效果&#xff0c;常用 “……

地图实火!断货加印,限时折扣抢购通道开启

&#xff08;关注公众号点击图片三折购买《社交泛娱乐出海作战地图》&#xff09; 实火&#xff01; 融云自制《社交泛娱乐出海作战地图》 “WICC 泛娱乐出海嘉年华”最热单品 关注【融云全球互联网通信云】了解更多 《出海作战地图》线下首发立刻引爆现场&#xff0c;“如…

springboot源码分析-jar启动

概述 Spring Boot 提供了 Maven 插件 spring-boot-maven-plugin&#xff0c;可以方便的将 Spring Boot 项目打成 jar 包或者 war 包。 SpringBoot 是如何通过jar包启动的 java -jar做了什么&#xff1f;看看官网怎么说 If the -jar option is specified, its argument is the …

通达信l1l2行情接口是什么?

通达信l1l2行情接口是什么&#xff1f;L1L2是指L1L2范数&#xff0c;范数理解为”空间两点之间的距离“这个概念被扩展了。 权重w可以理解为高维向量&#xff0c;也可以理解为高维空间中的一个点。如果从这个点到原点的距离是欧洲距离&#xff0c;那就是L2范数&#xff0c;如图…

如何调用通达信l2行情接口?

如何调用通达信l2行情接口&#xff1f;今天小编&#xff0c;就用这三个场景说明一下&#xff0c;如下&#xff1a; 1、API平台生成公钥&#xff0c;发布公钥并提供给需要连接API的人员。 2、Tradex涵盖市场接收、访问、管理和定制&#xff0c;实现一揽子解决方式。 3、量化接…

东方财富、同花顺、大智慧、通达信的Level2行情接口哪个好?

其实Level2行情接口最主要的核心是逐笔委托和逐笔成交的买卖单数据&#xff0c;盘口数据转瞬即逝&#xff0c;如何能方便的在程序中调用到最全面的即时数据才是应该关心的内容。至于看盘&#xff0c;再好的眼神再快的人脑也比不过使用软件程序写出自己的交易方法让电脑的精准和…

运行通达信行情接口软件的电脑需要什么配置?

运行通达信行情接口软件电脑需要什么配置&#xff1f;目前除了机构之外&#xff0c;大部分的散户用的都是一些比较有名的电脑版股票软件&#xff0c;比如&#xff1a;通达信、同花顺、大智慧、东方财富等。通达信行情接口软件因为使用C语言编写&#xff0c;执行效率高&#xff…

通达信L2行情接口怎样破解?

有些投资者或工作室想使用通达信L2行情接口&#xff0c;但又不想另外去购买&#xff0c;那怎么办呢&#xff1f;最有效的方法就是破解它&#xff0c;那具体要怎么做呢&#xff1f; 要破解通达信L2行情接口&#xff0c;最简单的方法就是通过编程获取数据&#xff0c;然后自己编写…