• Unity3D 纹理偏移(TextureOffset)浅析


    首先,给出圣典的解释:

    Material.mainTextureOffset 主纹理偏移量

     

    var mainTextureOffset : Vector2

    Description描述

    The texture offset of the main texture.

    主纹理中的纹理偏移量

    The same as using GetTextureOffset or SetTextureOffset with "_MainTex" name.

    这个与带有"_MainTex"名称的 GetTextureOffset SetTextureOffset 相同

    参考:SetTextureOffset, GetTextureOffset.

     1 using UnityEngine;
     2 using System.Collections;
     3 
     4 public class example : MonoBehaviour 
     5 {
     6 public float scrollSpeed = 0.5F;
     7 void Update()
     8    {
     9     float offset = - Time.time * scrollSpeed;   //这里的Time.time和我例子中   Time.detalTime不一样  但这句话的意思是一样的  都是不断递减的一个数  
    10     renderer.material.mainTextureOffset = new Vector2(offset, 0);
    11    }
    12 }

    从上面我们知道,TextureOffset是纹理偏移的意思,通过renderer.material.mainTextureOffset = new Vector2(offset, 0);函数实现Unity中物体材质的偏移,
    通过这个函数 可以在游戏中实现背景循环滚动的效果(也可以通过两个相同的背景交替上下实现这个效果,这里不做细讲) 我们知道编程中一个函数体不变的函数,能影响输出结果
    的就是函数的参数, 那么这个函数中的参数代表着什么呢?
    笔者在Unity中进行试验:
    float m_offset;     //物体材质的偏移量
    
    float m_speed= 0.1f;     //物体材质偏移的速度
    
     void Update ()
    
    {       
    
         m_offset =m_offset  -  m_speed * Time.deltaTime;    //这里物体材质的偏移量 就是 每帧的时间乘以自己定义的速度
    
         this.GetComponent<Renderer>().material.mainTextureOffset = new Vector2(0, m_offset);    //通过这个函数实现物体材质的偏移和滚动
    
     }

                                     !!!这里注意  材质偏移只有(x,y)两个参数 分别代表材质在横向和纵向的偏移!!!

    在上述例子中,
    1.我首先把 new Vector2(0, m_offset)中的0改为10000,编译后在Unity中调试 发现物体材质的偏移速度并没有发生改变
    2.然后我又把 new Vector2(0, m_offset)中的0和m_offset进行了互换,发现由上下偏移变成了左右偏移,说明常量没有效果 一个每帧都改变的量才能实现函数的偏移
    3.我又把 1.步骤中加了一步:把m_offset前面乘以10000,这样就变成了 new Vector2(10000, 10000*m_offset); 然后调试发现 物体材质偏移左右依然岿然不动 然后上下快了好多好多,
    这说明函数中的"10000"是有效果的,而且只有在参数是变量的基础上才会发生作用,而且10000变成100000000的话 物体材质偏移的速度会更快


    这样,我们对renderer.material.mainTextureOffset = new Vector2(offset, 0);就有一个全面深刻的了解了,以后用到也会更加灵活了.
         
  • 相关阅读:
    pom.xml配置文件内容记录
    如何做出一个博客网站
    PHP中cookie和session的区别
    PHP链接mysql 出现:由于目标计算机积极拒绝,无法连接
    DOM增删操作(创建删除表格)
    DOM增删操作(select动态增加和删除以及清空)
    DOM增删改操作
    DOM操作表格
    SSD性能测试
    我的配置单
  • 原文地址:https://www.cnblogs.com/qiaogaojian/p/5868226.html
Copyright © 2020-2023  润新知