Unity3D canvas SetActive无法在WebPlayer上运行

时间:2016-02-11 10:37:32

标签: c# unity3d unity-web-player

我在Unity中遇到了WebPlayer的问题。

我的游戏在我的代码开头使用SetActive停用了一些画布。在编辑器或桌面版本中,这些画布已正确停用。

但是当我构建一个网络播放器版本时,它们却不是。全部显示。我更新了一切,但没有变化。

这是我的代码:

void Start ()
{
    base.Start();

    MusicLoopsManager.manager.PlayMusic(MusicType.menuMusic);

    mode = GameObject.Find("Mode") as GameObject;
    modeState = ModeState.play;
    pause = GameObject.Find("Pause") as GameObject;
    resume = GameObject.Find("Resume") as GameObject;
    retry = GameObject.Find("Retry") as GameObject;
    exit = GameObject.Find("Exit") as GameObject;

    titleCanvas = GameObject.Find("TitleCanvas") as GameObject;
    levelSelectionCanvas = GameObject.Find("LevelSelectionCanvas") as GameObject;
    hudCanvas = GameObject.Find("HUDCanvas") as GameObject;
    pauseCanvas = GameObject.Find("PauseCanvas") as GameObject;
    victoryCanvas = GameObject.Find("VictoryCanvas") as GameObject;

    levelSelectionCanvas.gameObject.SetActive(false);
    hudCanvas.gameObject.SetActive(false);
    pauseCanvas.gameObject.SetActive(false);
    victoryCanvas.gameObject.SetActive(false);
}

1 个答案:

答案 0 :(得分:3)

请注意,除了其他任何内容之外,您 不能在Unity中使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="grid4 text_center" style="margin: 20px 20px 0px 0px;"> <input value="Calculer" class="bouton btvalid btlong250 validation" type="submit"> </div> <script> (function(factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if (typeof exports === 'object') { factory(require('jquery')); } else { factory(jQuery); } }(function($, undefined) { function _match(me, query, fn, fn2) { return me.selector == query.selector && me.context == query.context && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid); } $.extend($.fn, { livequery: function(fn, fn2) { var me = this, q; // See if Live Query already exists $.each($jQlq.queries, function(i, query) { if (_match(me, query, fn, fn2)) // Found the query, exit the each loop return (q = query) && false; }); // Create new Live Query if it wasn't found q = q || new $jQlq(me.selector, me.context, fn, fn2); // Make sure it is running q.stopped = false; // Run it immediately for the first time q.run(); // Contnue the chain return me; }, expire: function(fn, fn2) { var me = this; // Find the Live Query based on arguments and stop it $.each($jQlq.queries, function(i, query) { if (_match(me, query, fn, fn2) && !me.stopped) $jQlq.stop(query.id); }); // Continue the chain return me; } }); var $jQlq = $.livequery = function(selector, context, fn, fn2) { var me = this; me.selector = selector; me.context = context; me.fn = fn; me.fn2 = fn2; me.elements = $([]); me.stopped = false; // The id is the index of the Live Query in $.livequery.queries me.id = $jQlq.queries.push(me) - 1; // Mark the functions for matching later on fn.$lqguid = fn.$lqguid || $jQlq.guid++; if (fn2) fn2.$lqguid = fn2.$lqguid || $jQlq.guid++; // Return the Live Query return me; }; $jQlq.prototype = { stop: function() { var me = this; // Short-circuit if stopped if (me.stopped) return; if (me.fn2) // Call the second function for all matched elements me.elements.each(me.fn2); // Clear out matched elements me.elements = $([]); // Stop the Live Query from running until restarted me.stopped = true; }, run: function() { var me = this; // Short-circuit if stopped if (me.stopped) return; var oEls = me.elements, els = $(me.selector, me.context), newEls = els.not(oEls), delEls = oEls.not(els); // Set elements to the latest set of matched elements me.elements = els; // Call the first function for newly matched elements newEls.each(me.fn); // Call the second function for elements no longer matched if (me.fn2) delEls.each(me.fn2); } }; $.extend($jQlq, { guid: 0, queries: [], queue: [], running: false, timeout: null, registered: [], checkQueue: function() { if ($jQlq.running && $jQlq.queue.length) { var length = $jQlq.queue.length; // Run each Live Query currently in the queue while (length--) $jQlq.queries[$jQlq.queue.shift()].run(); } }, pause: function() { // Don't run anymore Live Queries until restarted $jQlq.running = false; }, play: function() { // Restart Live Queries $jQlq.running = true; // Request a run of the Live Queries $jQlq.run(); }, registerPlugin: function() { $.each(arguments, function(i, n) { // Short-circuit if the method doesn't exist if (!$.fn[n] || $.inArray(n, $jQlq.registered) > 0) return; // Save a reference to the original method var old = $.fn[n]; // Create a new method $.fn[n] = function() { // Call the original method var r = old.apply(this, arguments); // Request a run of the Live Queries $jQlq.run(); // Return the original methods result return r; }; $jQlq.registered.push(n); }); }, run: function(id) { if (id !== undefined) { // Put the particular Live Query in the queue if it doesn't already exist if ($.inArray(id, $jQlq.queue) < 0) $jQlq.queue.push(id); } else // Put each Live Query in the queue if it doesn't already exist $.each($jQlq.queries, function(id) { if ($.inArray(id, $jQlq.queue) < 0) $jQlq.queue.push(id); }); // Clear timeout if it already exists if ($jQlq.timeout) clearTimeout($jQlq.timeout); // Create a timeout to check the queue and actually run the Live Queries $jQlq.timeout = setTimeout($jQlq.checkQueue, 20); }, stop: function(id) { if (id !== undefined) // Stop are particular Live Query $jQlq.queries[id].stop(); else // Stop all Live Queries $.each($jQlq.queries, $jQlq.prototype.stop); } }); // Register core DOM manipulation methods $jQlq.registerPlugin('append', 'prepend', 'after', 'before', 'wrap', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'empty', 'remove', 'html', 'prop', 'removeProp'); // Run Live Queries when the Document is ready $(function() { $jQlq.play(); }); })); </script>

“开始”只是不起作用 - 它是一个神奇的功能,它几乎就像一些预处理器语法糖果。

您可以google much about the issue

所以在第一个例子中,不要这样做或尝试这样做。

如果您正在使用派生类,请不要尝试在“开始”中执行任何操作。拥有自己的功能 - 比如“开始”或“设置” - 并完全使用它。只需从Unity的魔法base.Start()

中调用它