深入了解Unity的Input类:一份详细的技术指南(六)

这篇具有很好参考价值的文章主要介绍了深入了解Unity的Input类:一份详细的技术指南(六)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在Unity开发中,我们通常需要获取并处理用户的输入,这时我们就需要用到Unity的Input类。它允许我们通过键盘,鼠标,触摸屏,游戏手柄等多种方式从用户那里接收输入。在本篇文章中,我会用一万字以上深度解析Unity的Input类,并提供其属性和方法的详细使用方式。


  1. 按键状态相关
    属性:
    Input.anyKey:如果用户按下任何键,返回true(只读)
    Input.anyKeyDown:如果用户在当前帧中按下任何键,返回true(只读)
    方法:
    Input.GetKey(KeyCode key):如果按着指定的键,则返回 true
    Input.GetKeyDown(KeyCode key):如果按下了指定的键,则返回 true
    Input.GetKeyUp(KeyCode key):如果释放了指定的键,则返回 true

Input.anyKey: 检测最后一帧中是否有任何键被按下(bool)
如果用户按下了任何键,或者按下了鼠标按钮,或者触控设备有任何的触控输入,这里的"任何键"包括键盘按键,鼠标按键,以及触控输入。它会在用户按住键不放的整个过程中一直返回 true

void Update()
{
    if (Input.anyKey)
    {
        Debug.Log("按着一个键");
    }
}

Input.anyKeyDown: 检测在当前帧中是否有任何键被按下(bool)
只在用户刚刚开始按下任何键的那一帧,也就是说,只有在按键刚被按下的那一帧,它才会返回 true,之后的帧,即使按键仍然被按住,它也会返回 false。同样的,这里的"任何键"也包括键盘按键,鼠标按键,以及触控输入

void Update()
{
    if (Input.anyKeyDown)
    {
        Debug.Log("刚按了一个键");
    }
}

Input.GetKey(KeyCode key):这个方法可以用来检测用户是否按下了任何指定的键。如果用户按下了指定的键,该方法会返回true,否则返回false,键的名称以KeyCode的形式作为参数。
如果用户一直按住该键,那么此方法会在每一帧都返回 true。

Input.GetKeyDown(KeyCode):只在用户开始按下指定的键的那一帧返回 true。也就是说,只有在按键刚被按下的那一帧,它才会返回 true,之后的帧,即使按键仍然被按住,它也会返回 false

Input.GetKeyUp(KeyCode):只在用户释放指定的键的那一帧返回 true。当用户松开按键时,这个方法在那一帧返回 true,其余时间返回 false

void Update() {
    if (Input.GetKey(KeyCode.Space)) {
        Debug.Log("空格键被按着");
    }
    if (Input.GetKeyDown(KeyCode.Space)) {
        Debug.Log("空格键被按下");
    }
     if (Input.GetKeyUp(KeyCode.Space)) {
        Debug.Log("空格键被松开");
    }
}

  1. 按钮状态相关
    方法:
    Input.GetButton(string buttonName):如果按着指定的虚拟按钮,则返回 true
    Input.GetButtonDown(string buttonName):如果按下了指定的虚拟按钮,则返回 true
    Input.GetButtonUp(string buttonName):如果释放了指定的虚拟按钮,则返回 true
    上面这三个方法用于检测特定的游戏按钮的状态,它们都需要一个字符串参数,这个字符串是你在 Unity 的 Input Manager 中定义的按钮名

Input.GetButton(string buttonName):如果用户按下了指定的虚拟按钮,该方法会返回true,否则返回false。按钮的名称以字符串的形式作为参数。如果一直按住该按钮,那么此方法会在每一帧都返回 true

Input.GetButtonDown(string buttonName):只在用户开始按下指定的按钮的那一帧返回 true。也就是说,只有在按钮刚被按下的那一帧,它才会返回 true,之后的帧,即使按钮仍然被按住,它也会返回 false

Input.GetButtonUp(string buttonName):只在用户释放指定的按钮的那一帧返回 true。当用户松开按钮时,这个方法在那一帧返回 true,其余时间返回 false。

void Update() {
    if (Input.GetButton("Jump")) {
        Debug.Log("Jump按钮被按住.");
    }
    if (Input.GetButtonDown("Jump")) {
        Debug.Log("Jump按钮被按下.");
    }
    if (Input.GetButtonUp("Jump")) {
        Debug.Log("Jump按钮被松开.");
    }
}

  1. 鼠标状态、位置和移动相关
    属性:
    Input.mousePresent:如果有鼠标设备连接上,返回 true(只读)
    Input.mousePosition:返回当前的鼠标位置(只读)
    Input.mouseScrollDelta:返回鼠标滚轮的滚动量(只读)
    方法:
    Input.GetMouseButton(int button):如果按着鼠标按钮,则返回 true
    Input.GetMouseButtonDown(int button):如果按下了鼠标按钮,则返回 true
    Input.GetMouseButtonUp(int button):如果释放了鼠标按钮,则返回 true

Input.mousePresent:这是一个布尔值,如果用户的设备支持并且连接了鼠标设备,则返回 true,否则返回 false。在下面这个例子中,我们在游戏启动时检查鼠标是否连接。

void Start()
{
    if (Input.mousePresent)  
    {
        Debug.Log("“鼠标已连接");
    }
    else
    {
        Debug.Log("“鼠标未连接");
    }
}

Input.mousePosition:获取鼠标在屏幕上的位置,这是一个 Vector3 类型的值,表示当前鼠标在屏幕上的位置。位置的 x 和 y 值表示鼠标在屏幕上的像素坐标,z 值通常为 0(在 2D 空间中)。请注意,此坐标的原点(0,0)在屏幕的左下角。

void Update()
{
    Vector3 mousePosition = Input.mousePosition;
    Debug.Log(mousePosition); //(-16.0, 221.0, 0.0)
}

Input.mouseScrollDelta:这是一个 Vector2 类型的值,表示自上一帧以来鼠标滚轮的滚动量。x 值表示水平滚动,y 值表示垂直滚动。

void Update()
{
    Vector2 scrollDelta = Input.mouseScrollDelta;
    if (scrollDelta.y > 0){
        Debug.Log("鼠标滚轮向上滚动: " + scrollDelta.y);
    }
    else if (scrollDelta.y < 0){
        Debug.Log("鼠标滚轮向下滚动: " + scrollDelta.y);
    }
}

Input.GetMouseButton(int button):此方法接收一个整数参数,代表鼠标的按钮索引(0 表示左键,1 表示右键,2 表示中键),并在按钮被持续按下时返回 true

Input.GetMouseButtonDown(int button):此方法同样接收一个整数参数代表鼠标的按钮索引,并只在按钮被首次按下的那一帧返回 true

Input.GetMouseButtonUp(int button):此方法同样接收一个整数参数,代表鼠标的按钮索引,并只在按钮被释放的那一帧返回 true

void Update()
{
    if (Input.GetMouseButton(0)){
        Debug.Log("“正在按鼠标左键");
    }
    if (Input.GetMouseButtonDown(0)){
        Debug.Log("“按下了鼠标左键");
    }
    if (Input.GetMouseButtonUp(0)){
        Debug.Log("“松开了鼠标左键");
    }
}

  1. 其他输入控制相关方法:
    Input.GetAxis(string axisName):根据指定的轴名返回轴的值
    Input.GetAxisRaw(string axisName):根据指定的轴名返回轴的值,没有平滑过滤。
    Input.IsJoystickPreconfigured(string joystickName):检查名为 joystickName 的手柄是否已在 Unity 输入管理器中预配置
    Input.GetJoystickNames():返回当前连接的所有游戏控制器的名称

Input.GetAxis(string axisName): 返回指定虚拟轴的值,轴的名称以字符串的形式作为参数。该值在 -1 和 1 之间,这个值会在没有输入时平滑地返回到 0。这个方法非常有用,可以用来获取预定义的虚拟轴的值,如“Horizontal”或“Vertical”:

void Update() {
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    Debug.Log("水平输入: " + horizontalInput);
    Debug.Log("垂直输入: " + verticalInput);
}

Input.GetAxisRaw(string axisName):提供和GetAxis方法类似的功能,但是该方法不会对值进行平滑处理,它直接返回输入值。当你需要更精确的控制时可以使用该方法,示例同上。

Input.IsJoystickPreconfigured(string joystickName):检查名为 joystickName 的手柄是否已经在 Unity 的输入管理器中预配置。返回 true 表示已经预配置,false 表示没有预配置。

bool isPreconfigured = Input.IsJoystickPreconfigured("Xbox360Controller");

Input.GetJoystickNames():返回当前连接的所有游戏控制器的名称,返回的是一个字符串数组。

string[] joystickNames = Input.GetJoystickNames();
foreach(string joystickName in joystickNames)
{
    Debug.Log(joystickName);
}

  1. 触摸相关
    属性:
    Input.touchCount:返回当前帧中的触摸数量(只读)
    Input.touches:返回从触摸屏接收的所有触摸信息的数组(只读)
    Input.multiTouchEnabled:设置或获取是否启用多点触控。
    Input.touchSupported:如果设备支持触摸输入,则返回true
    Input.simulateMouseWithTouches:如果启用,则将触摸事件作为鼠标事件进行处理,返回布尔值
    Input.stylusTouchSupported:如果设备支持使用触摸笔作为输入,则返回true
    Input.touchPressureSupported:如果设备支持检测触摸压力,则返回true
    方法:
    Input.GetTouch(int index):返回触摸数据。可以访问正在发生触摸的特定指数

Input.touchCount: 返回一个整数,代表在当前帧被触摸的触摸点数量。对于多点触控设备非常有用,例如在触摸屏设备上实现手势操作。

void Update()
{
    int touchCount = Input.touchCount;
    Debug.Log("触摸数量: " + touchCount);   //触摸数量:2
}

Input.touches: 返回一个 Touch[] 数组,包含了当前帧所有的触摸点。每个 Touch 对象包含了该触摸点的详细信息,如位置、压力、相对于上一帧的移动等。

void Update()
{   //遍历所有的触摸点,并在控制台输出它们的位置
    foreach (Touch touch in Input.touches)
    {
        Debug.Log("触摸位置: " + touch.position);
    }
}

Input.multiTouchEnabled: 这个属性是一个布尔值,用于开启或关闭多点触控功能。默认情况下该功能是开启的。如果设为 false,则不论设备上有多少个触摸点,Input.touches 只会返回最早的那个触摸点。

void Start()
{
    //多点触控功能关闭
    Input.multiTouchEnabled = false;
}

Input.touchSupported:是一个只读的布尔值属性,它用于检查当前设备是否支持触摸输入。如果支持,它将返回 true,否则返回 false。

if (Input.touchSupported)
{
    Debug.Log("“本设备支持触摸");
}
else
{
    Debug.Log("“本设备不支持触摸");
}

Input.simulateMouseWithTouches: 获取或设置是否应该模拟鼠标输入的触摸事件(bool)。
默认情况下,Input.simulateMouseWithTouches 为 true,触控点将模拟鼠标事件,这意味着在多点触控设备上,你可以像在使用鼠标一样处理用户的输入。然而,如果你的应用程序需要处理多点触控,你可能需要将此设置为 false,以防止对触控事件的鼠标模拟。

     //禁用模拟触摸鼠标
    Input.simulateMouseWithTouches = false;

Input.stylusTouchSupported: 获取设备是否支持手写笔输入(bool),在开发针对触控笔的应用程序时,这是非常有用的

if (Input.stylusTouchSupported)
{
    Debug.Log("本设备支持手写笔");
}
else
{
    Debug.Log("本设备不支持手写笔");
}

Input.touchPressureSupported:是一个只读的布尔值属性,它用于检查当前设备是否支持触摸压力(深度触摸)。如果支持,它将返回 true,否则返回 false。对于像 Apple 的 3D Touch 功能这样的技术,这是非常有用的。

if (Input.touchPressureSupported)
{
    Debug.Log("该设备支持触摸压力");
}
else
{
    Debug.Log("该设备不支持触摸压力");
}

Input.GetTouch(int index): 这个方法返回指定索引的 Touch 对象。索引应该小于 Input.touchCount数量,否则会抛出异常。下面例子中,如果存在触摸点,就获取第一个触摸点,并输出它的位置。

void Update()
{
    if (Input.touchCount > 0)
    {
        Touch firstTouch = Input.GetTouch(0);
        Debug.Log("第一个触摸点: " + firstTouch.position);
    }
}

  1. 加速度相关属性:
    Input.acceleration:返回由加速度传感器测量的设备当前加速度(只读)
    Input.accelerationEventCount:返回当前帧中发生的加速度事件的数量(只读)
    Input.accelerationEvents:返回一个包含所有在当前帧中发生的加速度事件的数组(只读)

Input.acceleration: 返回从加速度传感器中获取的设备加速度(Vector3)

void Update()
{
    Vector3 acceleration = Input.acceleration;
    Debug.Log(acceleration);//可能会输出如"(-0.00, -0.70, 0.10)"这样的三维向量,这些数字表示设备在x, y, z轴上的加速度。
}

Input.accelerationEventCount: 返回加速度传感器事件的数量(int)

void Update()
{
    int accelerationEvents = Input.accelerationEventCount;
    Debug.Log(accelerationEvents);//可能会输出类似于"1"或"0"的数字,这取决于最后一帧中发生了多少加速度事件。
}

Input.accelerationEvents: 这个属性返回一个 AccelerationEvent[] 数组,包含了当前帧所有的加速度事件。每个 AccelerationEvent 对象包含了该事件的详细信息,如加速度和时间戳。这个属性通常用于处理设备的加速度数据。

void Update()
{
    //遍历所有的加速度事件,并在控制台输出它们的加速度值
    foreach (AccelerationEvent accEvent in Input.accelerationEvents)
    {
        Debug.Log("加速度: " + accEvent.acceleration);
    }
}

  1. 设备行为相关属性:
    Input.backButtonLeavesApp:当这个值为 true 时,按下返回按钮会导致应用程序退出,否则,操作系统将处理返回按钮

Input.backButtonLeavesApp: 设置 Android 的返回按钮是否会让应用程序离开(bool)。以下示例设置返回按钮使应用退出:(只能在Android、Windows Phone或Windows平板电脑上使用)

void Start()
{
    Input.backButtonLeavesApp = true;
}

  1. 游戏控制器相关属性:
    Input.compensateSensors:启用或禁用输入传感器是否根据屏幕方向进行自动补偿
    Input.deviceOrientation:设备的方向(只读)
    Input.compass:访问设备的指南针,返回一个Compass对象
    Input.gyro:访问设备的陀螺仪,返回一个Gyroscope对象。

Input.compensateSensors: 这是一个布尔值类型的属性,用于启用或禁用是否应补偿设备的自然方向,默认值为 false。当启用此设置时,Unity将尝试自动调整传感器数据,以便自然方向对应于屏幕向上的方向。注意,此设置可能会影响到陀螺仪、加速度计和指南针的数据。

void Start()
{
    Input.compensateSensors = true;//启用了自动补偿
}

Input.deviceOrientation: 返回设备的物理方向

void Update()
{
    DeviceOrientation orientation = Input.deviceOrientation;
    Debug.Log(orientation);//可能会输出"Portrait", "LandscapeLeft", "LandscapeRight"等等,这取决于设备的当前方向。
}

Input.compass: 提供设备罗盘的访问
这个属性返回一个 Compass 对象,它可以提供设备指南针的数据。在使用指南针数据之前,需要先通过调用 Input.compass.enabled = true 来启用指南针

void Start()
{
    Input.compass.enabled = true;
}

void Update()
{
    Debug.Log("罗盘方向: " + Input.compass.trueHeading);
}
//上述代码首先启用了指南针,然后每一帧都打印出真实的地理方向。

Input.gyro: 提供设备陀螺仪的访问
这个属性返回一个 Gyroscope 对象,可以提供设备陀螺仪的数据。在使用陀螺仪数据之前,需要先通过调用 Input.gyro.enabled = true 来启用陀螺仪

void Start()
{
    if (SystemInfo.supportsGyroscope) //利用SystemInfo类,判断设备是否支持陀螺仪
    {
        Input.gyro.enabled = true;
    }
    void Update()
    {
        Debug.Log("陀螺仪旋转速度: " + Input.gyro.rotationRate);
    }
}

  1. 其他
    属性:
    Input.compositionCursorPos:获取或设置输入法编辑器(IME)的位置。返回一个Vector2,表示IME的屏幕坐标
    Input.compositionString:返回用户正在使用输入法编辑器(IME)输入的字符串
    Input.imeCompositionMode:获取或设置当前的输入法编辑器(IME)组合模式
    Input.imeIsSelected:检查输入法编辑器(IME)是否在活动状态并且已选择一个区域进行组合(只读)
    Input.inputString:返回上一帧中键盘或按键输入的字符(只读)
    Input.location:访问设备的位置功能,返回一个LocationService对象
    方法:
    Input.ResetInputAxes():重置所有输入,这将忽略所有的按键/按钮输入和轴移动

Input.compositionCursorPos:这是一个Vector2类型的属性,表示IME组合字符串的屏幕位置。你可以通过设置这个属性来改变屏幕上组合字符串的位置。

Input.compositionCursorPos = new Vector2(100, 200);
//上面的代码将组合字符串的位置设置为屏幕上的(100, 200)的位置

Input.compositionString:这是一个字符串属性,表示当前正在由IME组合的字符串。这在处理非拉丁字符输入时非常有用,如中文输入

string composition = Input.compositionString;
Debug.Log(composition);  // 输出:正在输入的IME组合字符串

Input.imeCompositionMode:控制系统如何处理在屏幕键盘中的文本输入
①这是一个枚举类型的属性(IMECompositionMode枚举),用于控制IME的组合模式。
②允许用户通过标准键盘输入复杂的字形,如中文、日文或韩文等非拉丁语系的语言。
③这个属性有三个值:Auto和On、Off。

On:开启IME。当你希望用户使用IME输入文本时,应将此属性设置为On
Off:关闭IME。如果你不希望用户使用IME输入文本,例如在需要处理原始键盘输入的情况下,应将此属性设置为Off
Auto:自动开启或关闭IME。Unity将根据用户是否正在编辑可输入的文本字段来自动开启或关闭IME。如果用户正在编辑文本字段,IME将开启;否则,IME将关闭。

例如:在用户打开一个需要输入文本的UI界面时,你可能想要开启IME,以便用户可以输入复杂的字形。在用户关闭这个界面时,你可能想要关闭IME,以便可以直接处理键盘输入。

// 开启IME,以便用户可以输入复杂的字形
Input.imeCompositionMode = IMECompositionMode.On;

// 当用户完成输入后,关闭IME
Input.imeCompositionMode = IMECompositionMode.Off;

// 或者,让Unity根据是否有文本字段正在编辑,自动处理IME的开启或关闭
Input.imeCompositionMode = IMECompositionMode.Auto;

Input.imeIsSelected:是一个只读的布尔型属性,用于判断当前是否选中了输入法编辑器(IME)的输入字段。
当IME正在编辑状态时,这个属性值为true,否则为false

Input.inputString: 返回自上次帧的字符输入(string)

void Update()
{
    string input = Input.inputString;
    if (!string.IsNullOrEmpty(input))
    {
        Debug.Log(input);
    }
}

Input.location: 提供了一个用于获取设备的地理位置信息的服务。这个服务可以提供如经度、纬度、海拔、方向和速度等信息
注意:这个服务默认是关闭的,你需要通过调用 Input.location.Start() 来启动位置服务。启动服务可能会消耗一些时间,所以你可能需要一些机制来等待服务完全启动。在启动服务后,你可以通过检查 Input.location.status 来确认位置服务的状态。

    //检查用户是否开启服务
    if (!Input.location.isEnabledByUser)
    {
        Debug.Log("用户未启用位置服务");
    }
    
    //开启位置服务
    Input.location.Start();
    
    //检查位置服务是否可用
    if (Input.location.status == LocationServiceStatus.Failed)
    {
        Debug.Log("无法确定设备位置");
    }
    else
    {
        Debug.Log("位置: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude);  //Location: 37.785834 122.406417
    }
    
    //停止位置服务
    Input.location.Stop();

注意:当你不再需要位置服务时,应通过调用 Input.location.Stop() 来停止服务,以节省设备的电池寿命。
如果想了解更多关于location里的方法和属性的相关内容,有需要的话我会在之后的文章详细说明。

Input.ResetInputAxes() :重置所有输入,这通常用于情况更改时,需要重置可能已经启动并影响输入的动作。
例如,您可能在游戏暂停并重新开始时使用它,以防止玩家在暂停菜单中按下按钮并在游戏恢复后立即生效。

public void ResumeGame()
{
    // 假设我们当前的游戏暂停了,并且在这里正在恢复游戏...
    
    // 在恢复游戏之前,我们需要重置输入输入,以防止在暂停期间发生的任何输入影响游戏
    Input.ResetInputAxes();
    // 然后我们可以继续游戏...
}

在上面例子中,Input.ResetInputAxes() 在游戏恢复之前被调用,以清除在暂停期间发生的任何输入


通过使用Unity的Input类,我们可以轻松地获取和处理用户的输入,它是我们在Unity开发中处理用户输入的关键,它使我们能够创建出交互丰富、响应流畅的游戏,希望这篇文章能帮助你更好地理解和使用Unity的Input类。文章来源地址https://www.toymoban.com/news/detail-628883.html

到了这里,关于深入了解Unity的Input类:一份详细的技术指南(六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入了解Unity的SystemInfo类:一份详细的技术指南(一)

    继上一篇 Unity开发——移动端实用特性使用(安卓/IOS) 介绍的实用特性使用,我们继续来深入探讨关于Unity的SystemInfo类 当你在进行Unity游戏开发时,有时候可能需要获取硬件信息或者某些系统级别的信息,例如,你可能想知道你的游戏是否能在支持某种特性的设备上运行。或者

    2024年02月12日
    浏览(41)
  • 深入了解Unity的Physics类:一份详细的技术指南(七)(上篇)

    Unity的Physics类是Unity物理系统的核心,提供了一套用于处理和控制物理模拟的API。这个类提供了用于控制物理系统的全局属性和方法,以及检测和施加力到游戏对象,处理碰撞和触发器事件等。为了让开发者都能更好理解这个Physics类,它的属性都 狠详细解释 ,导致篇章过长

    2024年02月10日
    浏览(37)
  • 深入了解Unity的Physics类:一份详细的技术指南(七)(下篇)

    碰撞检测和忽略: (这些方法和属性涉及查询和处理物体之间的碰撞) Physics.CheckBox : 检查给定位置的盒子是否与任何碰撞器接触或者位于任何碰撞器内部。 Physics.CheckCapsule : 检查给定位置的胶囊是否与任何碰撞器接触或者位于任何碰撞器内部。 Physics.CheckSphere : 检查给定位置的

    2024年02月11日
    浏览(42)
  • Kubernetes日志查看指南:深入了解容器日志管理技术

    简介: Kubernetes(简称K8s)已成为现代容器化应用程序管理的主要平台之一。了解如何有效地查看和管理Kubernetes集群中的容器日志对于故障排除、性能优化和安全监控至关重要。本文将向您介绍一些基本的技术和工具,帮助您在Kubernetes环境中查看和分析容器日志。 查看单个

    2024年02月12日
    浏览(42)
  • 【HTML】深入全掌握 iframe:了解 its 技术原理、优缺点、最佳应用场景及实战指南

    Web 应用开发中,包含其他网页的框架是很常见的需求。HTML 标签 iframe 提供了一个容器,可以用来嵌入其他页面,并且它自带了一些有用的特性,如调整大小、滚动等。 本文将深入介绍 iframe 技术原理、优缺点、最佳应用场景及实战指南,希望能帮助您更好地运用 iframe,提升

    2024年02月08日
    浏览(52)
  • 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目

    2024年02月13日
    浏览(56)
  • 深入探索Apache ZooKeeper:关键技术学习与实践指南

    Apache ZooKeeper,作为一款广受认可的分布式协调服务,为大型分布式系统提供了强大的数据一致性、服务注册与发现、分布式锁、配置管理等基础服务。本文将深入剖析ZooKeeper的技术内核,梳理其关键学习点,并结合实践场景给出学习与应用建议,帮助读者全方位掌握这一重要

    2024年04月28日
    浏览(43)
  • 【Linux技术宝典】深入理解Linux基本指令:命令行新手指南

    📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅Linux技术宝典 🌅 有航道的人,再渺小也不会迷途。 1. ls 指令 语法 : ls [选项][目录或文件] 功能 : 对于目录 ,列出目录的内容,即显示当前目录中的文件和子目录列表。 对于文件 ,将列出文件名以及其他信息。

    2024年02月21日
    浏览(40)
  • Unity Xlua热更新技术学习指南

    热更新是商业网络游戏必不可少的一项技术,而基于lua的热更新技术又是Unity商业网游项目中的一个主流选择。 部分同学近期表示自己在面试中被面试官提问热更新相关知识,但由于对热更新能力有所缺失,最后遗憾的与心仪工作失之交臂。 由此可见,还是有一部分同学不了

    2024年04月23日
    浏览(38)
  • 【SQL Server】数据库开发指南(八)高级数据处理技术 MS-SQL 事务、异常和游标的深入研究

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月07日
    浏览(92)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包